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

时间:2022-09-21 16:58:40

 

这个大家都应该是不陌生了,我本来想介绍一下,不过,我想了一下,我说的,绝对没有《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();
 }

}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2007/08/20/1752190.aspx