ArrayList
Posted hapyygril
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList相关的知识,希望对你有一定的参考价值。
容器
(1)Colletion函数库是java.util包下的接口和类
--类:产生对象,存放数据
--接口:访问数据
(2)Collection函数库与数组的区别
--数组的容量是有限的,collection没有限制
--collection函数库只能存放对象,数组没有限制
(3)Collection接口
--Set子接口:数组对象没有顺序,不可以重复
--List子接口:数组对象有顺序,可以重复
(4)Map接口
--存储“键(Key)-值(Value)映射对”
(5)ArrayList和LinkedList
--ArrayList:线程不安全,效率高。数组,查方便
--LinkedList:链表,增删改方便
--Vector:线程安全的
package TestList; import java.util.ArrayList; import java.util.Date; import java.util.List; public class TestArrayList { public static void main(String[] args) { List list=new ArrayList(); //数组 //List list=new LinkedList(); //链表 list.add("abc"); list.add("abc"); list.add(new Date()); list.add(new Person()); list.add(135); System.out.println("listSize: "+list.size());//5 /*remove 只删除第一个 * 不同的对象 hashcode和equals(值) */ /* "abc" 与 new String("abc")值相同 list.remove("abc"); System.out.println("listSize: "+list.size());//4 list.remove(new String("abc")); System.out.println("listSize: "+list.size());//4 */ /* //new Date()值不同 list.remove(new Date());//3 System.out.println("listSize: "+list.size());//5 */ System.out.println(list.isEmpty()); List list2=new ArrayList(); list2.add("bcd"); list2.add("ghu"); //add(Collection)作为整体向原有的list中添加,size+1 list.add(list2); System.out.println("listSize: "+list.size()); //addAll(Collection) 按照位置逐条向原有的list中添加对象元素,size+2 list.addAll(list2); System.out.println("listSize: "+list.size());// //get String str=(String)list.get(0); System.out.println("get: "+str);//abc //set list.set(0, "hello"); System.out.println(list.get(0)); } } class Person{ String name; public void Person(String name) { this.name=name; } }
package TestList; public class MyArrayList { public Object[] elementData; public int size; public int size() { return size; } //构造方法 public MyArrayList() { this(10); } //构造方法 public MyArrayList(int initialCapacity) { if(initialCapacity<0) { try { throw new Exception(); } catch(Exception e){ e.printStackTrace(); } } this.elementData=new Object[initialCapacity]; } private void checkRange(int index) { if(index<0||index>=size) { try{ throw new Exception(); }catch(Exception e) { e.printStackTrace(); } } } //add方法 public void add(Object obj) { //数组扩容 if(size==elementData.length) { Object[] newArray=new Object[size*2+1]; System.arraycopy(elementData, 0, newArray, 0, elementData.length); elementData=newArray; } elementData[size++]=obj; } //isEmpty public boolean isEmpty(Object obj) { return size==0; } //get public Object get(int index) { checkRange(index); return elementData[index]; } //remove(index) // a b c d e f g size=7 index=2 numMoved=4 // 0 1 2 3 4 5 6 public void remove(int index) { checkRange(index); int numMoved=size-index-1; if(numMoved>0) { System.arraycopy(elementData, index+1, elementData, index, numMoved); } elementData[--size]=null; } //remove(object) public void remove(Object obj) { for(int i=0;i<size;i++) { if(elementData[i].equals(obj)) { remove(i); } } } //set // a b c d e size=5 index=2 // 0 1 2 3 4 "s" public Object set(int index,Object obj ) { checkRange(index); Object oldValue=elementData[index]; elementData[index]=obj; return elementData; } //add public void add(int index,Object obj) { checkRange(index); System.arraycopy(elementData, index, elementData, index+1, size-index); elementData[index]=obj; size++; } public static void main(String[] args) { MyArrayList list=new MyArrayList(3); list.add("aaakkk"); list.add("bbbkkk"); list.add("ccckkk"); list.add("dddkkk"); System.out.println(list.size()); System.out.println(list.get(1)); //list.remove(1); //list.remove("bbbkkk"); list.set(1, "wwwwww"); System.out.println(list.get(1)); list.add(1,"mmmmm"); System.out.println(list.get(1)); } }
以上是关于ArrayList的主要内容,如果未能解决你的问题,请参考以下文章