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