zoukankan      html  css  js  c++  java
  • Collection接口与Iterator接口

    Collection接口的实现类跟Vector相似。要从实现了Collection接口的类的实例中取出保存在其中的元素对象,必须通过Collection接口的Iterator()方法,返回一个Iterator接口。

    Iterator接口与Enumeration接口非常相似。该接口的优点是其中的方法名比较简短。

    Arraylist类实现了Collection接口

    例:将上例改写为用ArrayList类和Iterator接口来实现。

    import java.util.*;

    public class TestCollection

    {

    public static void main(String[] args)

    {

    ArrayList v=new ArrayList();

    int b=0;

    int num=0;

    System.out.println("Please enter number:");

    while(true)

    {

    try

    {

    b=System.in.read();

    }

    catch(Exception e)

    {

    e.printStackTrace();

    }

    if(b==' '||b==' ')

    {

    break;

    }

    else

    {

    num=b-'0';

    v.add(new Integer(num)); //方法为add()而不是addelement()

    }

    }

    int sum=0;

    Iterator e=v.iterator();

    while(e.hasNext())//判断是否有数据时,使用的是hasNext()方法

    {

    Integer intobj=(Integer)e.next(); //取数据时使用next()方法,而不是nextElement()

    sum+=intobj.intValue();

    }

    System.out.println(sum);

    }

    }

    这两组实现的结果都是一样的,那什么时候使用哪种呢?

    Vector类中的所有方法都是线程同步的,所有有两个以上的线程访问并发访问vector对象时,是安全的,但是只有一个线程访问时,仍然存在同步监视器检查的情况,需要额外的开销,影响了效率。而ArrayList中的所有方法是不同步的,所以程序中如果不存在多线程安全的问题,则ArrayList比Vector的效率高。如果存在多线程安全的问题,使用ArrayList要自己编写同步处理,而使用Vector则不要。

    Collection,Set,List的区别如下:

    Set,List是Collection的子类。

    Collection各元素对象之间没有指定的顺序,允许有重复元素和多个Null元素对象。所以不可以排序,也不可以找出第几个第几个元素。

    Set各元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个Null元素对象。

    List各元素对象之间有指定的顺序,允许有重复元素和多个Null元素对象。

    import java.util.*;

    public class TestSort

    {

    public static void main(String[] args)

    {

    ArrayList al=new ArrayList();  //新建一个arraylist ,由于它也实现了list接口,所以可以进行排序

    al.add(new Integer(1));

    al.add(new Integer(3));

    al.add(new Integer(2));  //添加三个数字,随便添加,没有排序

    System.out.println(al.toString()); //打印

    Collections.sort(al);  //排序

    /*Collections类本身并不是一个集合类,它只是提供了各种方法来操作集合类*/

    System.out.println(al.toString());

    }

    }

     

  • 相关阅读:
    测试websocket
    goreplay-测试app的真实流量
    apache -ab
    微信公众平台开发(69)百度地图导航
    微信公众平台开发(70)经济指标财经大事
    微信公众平台开发(68)苹果IMEI查询
    微信公众平台开发(67)百度百科
    微信公众平台开发(66)人品计算
    微信公众平台开发(65) 微博树洞
    微信公众平台开发(64)航班动态
  • 原文地址:https://www.cnblogs.com/borter/p/9434180.html
Copyright © 2011-2022 走看看