文档章节

Collection接口与Iterator接口

o
 osc_4nmshwhm
发布于 2018/08/06 23:18
字数 616
阅读 0
收藏 0

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=='\r'||b=='\n')

{

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());

}

}

 

上一篇: 位集合类BitSet
下一篇: 随机访问
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

github的正确搜索方式

wc_飞豆
10分钟前
7
0
交叉编译-如何编译Android平台的可执行程序

首先来看看Linux平台下如何使用gcc编译出当下平台的可执行程序。 我们先来准备一个main.c文件 #include<stdio.h>int main(){ printf("Hello Gcc!"); return 0;} 上面是...

shzwork
14分钟前
0
0
Java 获取资源文件路径

1 问题描述 通过源码运行时,一般使用如下方式读取资源文件: String str = "1.jpg"; 资源文件与源码文件放在同一目录下,或者拥有同一父级目录: String str = "a/b/1.jpg"; 这样直接编译...

氷泠
46分钟前
12
0
git 为项目设置用户名/邮箱/密码

1.找到项目所在目录下的 .git,进入.git文件夹,然后执行如下命令分别设置用户名和邮箱 git config user.name "Affandi" git config user.email "123333333@qq.com" 然后执行命令查看con......

有时很滑稽
今天
0
0
如何从int转换为String? - How do I convert from int to String?

问题: I'm working on a project where all conversions from int to String are done like this: 我正在一个项目中,所有从int到String转换都是这样完成的: int i = 5;String strI = "" ......

javail
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部