集合(Collection)与迭代器(Iterator)

来源:互联网 发布:培训班软件 编辑:程序博客网 时间:2024/06/05 14:27

这个大家都应该是不陌生了,我本来想介绍一下,不过,我想了一下,我说的,绝对没有《Think In Java》说的好,所以我就引用下面的话,然后,我举例测试,并附代码于后。



测试用例:

Java代码 复制代码
  1. import java.util.ArrayList;   
  2. import java.util.Collection;   
  3. import java.util.HashMap;   
  4. import java.util.Hashtable;   
  5. import java.util.Iterator;   
  6. import java.util.LinkedList;   
  7. import java.util.TreeMap;   
  8. import java.util.Vector;   
  9.   
  10.   
  11. public class TestColleaction {   
  12.   
  13.  public TestColleaction() {   
  14.   // TODO Auto-generated constructor stub   
  15.  }   
  16.  /////////////////List类/////////////////   
  17.  void testArrayList()   
  18.  {   
  19.   ArrayList al=new ArrayList();   
  20.   al.add(1);   
  21.   al.add(2);   
  22.   al.add(3);     
  23.   Iterator it=al.iterator();//用迭代器将其迭代化,将其序列化为一个序列,   
  24.           //这样就可以遍历整个序列而不必关心底层结构   
  25.   System.out.println(al.size());   
  26.   System.out.println(it.toString());   
  27.   while(it.hasNext())   
  28.   {   
  29.    System.out.println(it.next());   
  30.   }   
  31.  }    
  32.  /**  
  33.   * Vector是同步、线程安全的,所以如果需要的是速度,并且不在多线程环境中使中,最好选ArrayList  
  34.   * ArrayList是非同步,当然也不是线程安全的  
  35.   * 且每次Vector容量的自动扩展是按100%扩展,但是ArrayList是按50%扩展,这样使用ArrayList  
  36.   * 就会节省内存空间  
  37.   */  
  38.  void testVector()   
  39.  {   
  40.   Vector vector=new Vector();   
  41.   vector.add(1);   
  42.   vector.add(2);   
  43.   vector.add(3);   
  44.   vector.add(4);   
  45.   //System.out.println(ll.peekFirst());//读第一个值   
  46.   //System.out.println(ll.peek());//默认永远读第一个,通常用于循环中   
  47.   //System.out.println(ll.peek());   
  48.   Iterator it=vector.iterator();   
  49.   while(it.hasNext())   
  50.   {   
  51.    System.out.println(it.next());   
  52.   }   
  53.  }   
  54.  /*  
  55.   * LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,  
  56.   * insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),  
  57.   * 队列(queue)或双向队列(deque)。  
  58.   */  
  59.  void testLinkedList()   
  60.  {   
  61.   LinkedList ll=new LinkedList();   
  62.   ll.add(1);   
  63.   ll.add(2);   
  64.   ll.add(3);   
  65.   ll.add(4);   
  66.   ll.addFirst(5);//链表操作可以进行前插或者是后插,中间任意插入   
  67.   ll.addLast(6);   
  68.   //System.out.println(ll.peekFirst());//读第一个值   
  69.   //System.out.println(ll.peek());//默认永远读第一个,通常用于循环中   
  70.   //System.out.println(ll.peek());   
  71.   ll.pop();//把第一个弹出栈   
  72.   ll.push(10);//压入栈   
  73.   Iterator it=ll.iterator();   
  74.   while(it.hasNext())   
  75.   {   
  76.    System.out.println(it.next());   
  77.   }   
  78.  }   
  79.  /////////////////List类/////////////////   
  80.  /////////////////Map类/////////////////   
  81.  void testHashMap()   
  82.  {   
  83.   HashMap hm=new HashMap();   
  84.   //HashMap及Hashtable都是散列表,不可以排序,就算是排好了序也会被打乱   
  85.   hm.put(1null);//可以放入空值   
  86.   hm.put(2"21");   
  87.   hm.put(3"33");   
  88.   hm.put(4"w434");   
  89.   hm.put(5"5we");   
  90.   hm.put(6"df6");   
  91.   hm.put(7"7we");   
  92.   hm.put(8"re8");   
  93.   //Map类都要先转换为最老的迭代Collection后,才能够转换为新的迭代Iterator   
  94.   Collection c=hm.values();   
  95.   Iterator it=c.iterator();   
  96.   while(it.hasNext())   
  97.   {   
  98.    System.out.println(it.next());   
  99.   }   
  100.  }   
  101.  void testHashTable()   
  102.  {   
  103.   Hashtable ht=new Hashtable();   
  104.   //ht.put(1, null);//不可以放入空值,这里会报错,并且Hashtable是同步的   
  105.   //HashMap及Hashtable都是散列表,不可以排序,就算是排好了序也会被打乱   
  106.   ht.put(2"21");   
  107.   ht.put(3"33");   
  108.   ht.put(4"w434");   
  109.   ht.put(5"5we");   
  110.   ht.put(6"df6");   
  111.   ht.put(7"7we");   
  112.   ht.put(8"re8");   
  113.   Collection c=ht.values();   
  114.   Iterator it=c.iterator();   
  115.   while(it.hasNext())   
  116.   {   
  117.    System.out.println(it.next());   
  118.   }   
  119.  }   
  120.  void testTreeMap()   
  121.  {   
  122.   TreeMap tm=new TreeMap();   
  123.   //ht.put(1, null);//不可以放入空值,这里会报错,并且Hashtable是同步的   
  124.   //TreeMap可以自动排序   
  125.   tm.put(2"21");   
  126.   tm.put(3"33");   
  127.   tm.put(4"w434");   
  128.   tm.put(5"5we");   
  129.   tm.put(6"df6");   
  130.   tm.put(7"7we");   
  131.   tm.put(8"re8");   
  132.   Collection c=tm.values();   
  133.   Iterator it=c.iterator();   
  134.   //输出将会按参数自动排序   
  135.   while(it.hasNext())   
  136.   {   
  137.    System.out.println(it.next());   
  138.   }   
  139.  }   
  140.  /////////////////Map类/////////////////   
  141.  /**  
  142.   * @param args  
  143.   */  
  144.  public static void main(String[] args) {   
  145.   // TODO Auto-generated method stub   
  146.   TestColleaction tc=new TestColleaction();   
  147.   //tc.testArrayList();   
  148.   tc.testVector();   
  149.   //tc.testLinkedList();   
  150.   //tc.testHashMap();   
  151.   //tc.testHashTable();   
  152.   //tc.testTreeMap();   
  153.  }   
  154.   
  155. }  
原创粉丝点击