这个大家都应该是不陌生了,我本来想介绍一下,不过,我想了一下,我说的,绝对没有《Think In Java》说的好,所以我就引用下面的话,然后,我举例测试,并附代码于后。
测试用例:
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Hashtable;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.TreeMap;
- import java.util.Vector;
- public class TestColleaction {
- public TestColleaction() {
- // TODO Auto-generated constructor stub
- }
- /List类/
- void testArrayList()
- {
- ArrayList al=new ArrayList();
- al.add(1);
- al.add(2);
- al.add(3);
- Iterator it=al.iterator();//用迭代器将其迭代化,将其序列化为一个序列,
- //这样就可以遍历整个序列而不必关心底层结构
- System.out.println(al.size());
- System.out.println(it.toString());
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- /**
- * Vector是同步、线程安全的,所以如果需要的是速度,并且不在多线程环境中使中,最好选ArrayList
- * ArrayList是非同步,当然也不是线程安全的
- * 且每次Vector容量的自动扩展是按100%扩展,但是ArrayList是按50%扩展,这样使用ArrayList
- * 就会节省内存空间
- */
- void testVector()
- {
- Vector vector=new Vector();
- vector.add(1);
- vector.add(2);
- vector.add(3);
- vector.add(4);
- //System.out.println(ll.peekFirst());//读第一个值
- //System.out.println(ll.peek());//默认永远读第一个,通常用于循环中
- //System.out.println(ll.peek());
- Iterator it=vector.iterator();
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- /*
- * LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,
- * insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),
- * 队列(queue)或双向队列(deque)。
- */
- void testLinkedList()
- {
- LinkedList ll=new LinkedList();
- ll.add(1);
- ll.add(2);
- ll.add(3);
- ll.add(4);
- ll.addFirst(5);//链表操作可以进行前插或者是后插,中间任意插入
- ll.addLast(6);
- //System.out.println(ll.peekFirst());//读第一个值
- //System.out.println(ll.peek());//默认永远读第一个,通常用于循环中
- //System.out.println(ll.peek());
- ll.pop();//把第一个弹出栈
- ll.push(10);//压入栈
- Iterator it=ll.iterator();
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- /List类/
- /Map类/
- void testHashMap()
- {
- HashMap hm=new HashMap();
- //HashMap及Hashtable都是散列表,不可以排序,就算是排好了序也会被打乱
- hm.put(1, null);//可以放入空值
- hm.put(2, "21");
- hm.put(3, "33");
- hm.put(4, "w434");
- hm.put(5, "5we");
- hm.put(6, "df6");
- hm.put(7, "7we");
- hm.put(8, "re8");
- //Map类都要先转换为最老的迭代Collection后,才能够转换为新的迭代Iterator
- Collection c=hm.values();
- Iterator it=c.iterator();
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- void testHashTable()
- {
- Hashtable ht=new Hashtable();
- //ht.put(1, null);//不可以放入空值,这里会报错,并且Hashtable是同步的
- //HashMap及Hashtable都是散列表,不可以排序,就算是排好了序也会被打乱
- ht.put(2, "21");
- ht.put(3, "33");
- ht.put(4, "w434");
- ht.put(5, "5we");
- ht.put(6, "df6");
- ht.put(7, "7we");
- ht.put(8, "re8");
- Collection c=ht.values();
- Iterator it=c.iterator();
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- void testTreeMap()
- {
- TreeMap tm=new TreeMap();
- //ht.put(1, null);//不可以放入空值,这里会报错,并且Hashtable是同步的
- //TreeMap可以自动排序
- tm.put(2, "21");
- tm.put(3, "33");
- tm.put(4, "w434");
- tm.put(5, "5we");
- tm.put(6, "df6");
- tm.put(7, "7we");
- tm.put(8, "re8");
- Collection c=tm.values();
- Iterator it=c.iterator();
- //输出将会按参数自动排序
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- /Map类/
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- TestColleaction tc=new TestColleaction();
- //tc.testArrayList();
- tc.testVector();
- //tc.testLinkedList();
- //tc.testHashMap();
- //tc.testHashTable();
- //tc.testTreeMap();
- }
- }