1、java的集合结构:(java.util包中)
Collection
????????|--List
?????????????? |--ArrayList
???????????????|--LinkedList
???????????????|--vector
????????????????????? |--stack
??????? |--Set
?????????????? |--EnumSet
???????????????|--TreeSet
?????????????? |--HashSet(类似于HashMap)
?
Map
??? |--TreeMap
??? |--HashMap
????|--Hashtable
?
?
2、具体区别:
(1)ArrayList和LinkedList的区别:
???????
?
?
(2)List和Set的区别:
??????? A、List允许多次插入null值,Set只允许插入一次null;
???????????? set的add()方法是:public boolean add(E e),只有当set中不存在当前值时,才会插入成功;
???????????? List的add()方法无此要求,可以允许重复插入;
?
??????? B、List可以使用list.get(int index)方法访问,Set只能通过Iterator迭代访问;
???????????? List是有序的Collection,可以精确的控制每个元素,可以使用每个元素的索引(元素在List中的下标,类似于数组的下标):?
List<Integer> list = new ArrayList<Integer>(); list.add(new Integer(1)); list.add(new Integer(1)); list.add(new Integer(2)); System.out.println(list.get(2));//下标从0开始,輸出為2
????????????
???????????? List也实现了Iterator接口,也可以通过Iterator迭代:
List<Integer> list = new ArrayList<Integer>(); list.add(new Integer(1)); list.add(new Integer(1)); list.add(new Integer(2)); Iterator<Integer> ite = list.iterator(); while(ite.hasNext()){ ite.next(); }
??????? List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一? 些add()之类的方法,允许添加,?删除,设定元素,还能向前或向后遍历。
ListIterator<Integer> ite2 = list.listIterator();//listIterator()方法,返回一个ListIterator接口 //ite2.previousIndex();//前一个索引值 //ite2.nextIndex();//后一个索引值 //ite2.previous();//前一个元素 //ite2.next(); //ite2.add(new Integer(3));//将指定的元素插入列表,插入到当前元素的后面 //ite2.next();//后一个元素 //ite2.set(new Integer(4));//用指定元素替换 next 或 previous 返回的最后一个元素 Iterator<Integer> ite = list.iterator(); while(ite.hasNext()){ System.out.println(ite.next());//3,1,1,2 }
??
(3)List和Map的区别:
?
3、Collections和Collection的区别:
?