集合(Collection)与迭代器(Iterator)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/fenglibing/75e6f2605a6241598f959778a99cc09d.png)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/fenglibing/3fbed4404aa1433ea369debb3e4746d4.png)
测试用例:
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();
}
}