集合(Collection)与迭代器(Iterator)
这个大家都应该是不陌生了,我本来想介绍一下,不过,我想了一下,我说的,绝对没有《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(); }}
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!