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


    集合(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();
     }

    }

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 相关阅读:
    前端开发-学习资料库
    前端数据校验从建模开始
    让 Markdown 中的代码可以实时运行
    小而美的 React Form 组件
    React 实现一个漂亮的 Table
    RSuite 一个基于 React.js 的 Web 组件库
    管理系统的前端解决方案:Pagurian V1.3发布
    selenium java 自动化测试 基于火狐浏览器/谷歌浏览器
    java从ldap中导出数据到ldif文件中
    根据官方文档搭建springcloud之eureka
  • 原文地址:https://www.cnblogs.com/skiwdhwhssh/p/10340961.html
Copyright © 2020-2023  润新知