zoukankan      html  css  js  c++  java
  • java开始到熟悉100-102

       本次内容:arraylist()

    1、

     1 package list;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Date;
     5 import java.util.List;
     6 
     7 /**
     8  * 测试list的基本方法
     9  * @author acer
    10  *
    11  */
    12 public class arraylist {
    13     public static void main(String[] args)
    14     {
    15         List list=new ArrayList();
    16         //Arraylist():低层实现是数组,查找容易,插入删除复杂。线程不安全
    17         //LinkedList():低层实现是链表,查找复杂,插入删除容易。线程不安全
    18         //Vector():低层实现是数组,线程安全
    19         list.add("aaa");
    20         list.add(new Date());
    21         list.add(1234);//包装类:自动装箱
    22         System.out.println(list.size());
    23         list.remove(0);
    24         System.out.println(list.size());
    25         list.get(0);
    26         System.out.println(list.get(0));
    27         list.set(0, "bbb");
    28         System.out.println(list.get(0));
    29         System.out.println(list.get(1));
    30     }
    31 }

    运行结果:
    3
    2
    Tue May 20 22:18:58 CST 2014
    bbb
    1234

    2、自己定义arraylist()函数

      1 package list;
      2 
      3 import java.util.Date;
      4 
      5 /**
      6  * 自己定义arraylist,熟悉其低层实现
      7  * @author acer
      8  *
      9  */
     10 public class myarraylist {
     11     private Object[] elementData;
     12     private int size;
     13     public int size()//数组的大小
     14     {
     15         return size;
     16     }
     17     public myarraylist(int initalCapacity)//构造器
     18     {
     19         elementData=new Object[initalCapacity];
     20     }
     21     public Object get(int index)//取数组的值
     22     {
     23         rangeCheck(index);
     24         return elementData[index];
     25     }
     26     public void add(Object object)//添加对象
     27     {
     28         ensureCapacity();
     29         elementData[size++]=object;
     30     }
     31     public void add(int index,Object obj)//指定位置添加对象
     32     {
     33         rangeCheck(index);
     34         ensureCapacity();
     35         int numMoved=size-index;
     36         System.arraycopy(elementData, index, elementData, index+1, numMoved);
     37         elementData[index]=obj;
     38         size++;
     39         
     40     }
     41     private void ensureCapacity()//数组的扩容
     42     {
     43         if(size==elementData.length)
     44         {
     45             Object[] newarraylist=new Object[size*2+1];
     46             System.arraycopy(elementData, 0,newarraylist,0,elementData.length);
     47             elementData=newarraylist;
     48         }
     49     }
     50     public void remove(int index)//移除对象
     51     {
     52         rangeCheck(index);
     53         int numMoved=size-index-1;
     54         if(numMoved>0)
     55         {
     56             System.arraycopy(elementData, index+1, elementData, index, numMoved);
     57         }
     58         elementData[--size]=null;
     59     }
     60     public void remove(Object obj)//移除对象
     61     {
     62         for(int i=0;i<size;i++)
     63         {
     64             if(get(i).equals(obj))
     65             {
     66                 remove(i);
     67             }
     68         }
     69     }
     70     public boolean isEmpty()//判是否为空
     71     {
     72         return size==0;
     73     }
     74     private void rangeCheck(int index)//检测检索值是否越界
     75     {
     76         if(index<0||index>=size)
     77         {
     78             try {
     79                 throw new Exception();
     80             } catch (Exception e) {
     81                 e.printStackTrace();
     82             }
     83         }
     84     }
     85     public static void main(String[] args)
     86     {
     87         myarraylist list=new myarraylist(3);
     88         list.add("aaa");
     89         list.add("bbb");
     90         list.add(new Date());
     91         System.out.println(list.isEmpty());
     92         System.out.println(list.size());
     93         System.out.println(list.get(0));
     94         System.out.println(list.get(1));
     95         System.out.println(list.get(2));
     96         list.remove(0);
     97         list.remove(new Date());
     98         System.out.println(list.get(0));
     99         list.add(1, "aaa");
    100         System.out.println(list.get(1));
    101     }
    102 }

    运行结果:

    false
    3
    aaa
    bbb
    Tue May 20 23:41:15 CST 2014
    bbb
    aaa

  • 相关阅读:
    slqite3练习
    QStackedWidget 与 QStackedLayout 的用法区别
    pyqt5 菜单,工具栏,线程,matplotlib
    PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar
    tkinter事件高级用法实例
    tkinter菜单图标,工具栏
    tkinter界面卡死的解决办法
    8个经过证实的方法:提高机器学习模型的准确率
    结合Scikit-learn介绍几种常用的特征选择方法
    scikit-learn的主要模块和基本使用
  • 原文地址:https://www.cnblogs.com/xiaojingang/p/3740171.html
Copyright © 2011-2022 走看看