您的位置:首页 > 编程语言 > Java开发

[学习笔记]Java集合框架以及Collection顶层接口

2014-12-14 22:39 579 查看


集合框架


概述

数组容器由于无法扩展容量,也没有更多的功能可以使用,而Java中的另一种容器:集合,就能满足这些要求。


特点

集合中的每一个元素都是对象,存储的实际上是对象的引用。
集合长度可扩展,并且是自动的。
根据数据结构的不同,集合分为很多种,每一种都有各自的特点。
集合的最上层是Collection接口,集合最基本的增删改查方法均在该接口中有所体现。
集合中如果没有使用泛型,则默认存储的是Object类,所有的对象均向上转型存入集合,取出使用时需要向下转型,并可能有类型转换异常。所以建议配合泛型使用集合。


集合框架UML类图






Collection集合(顶层接口)


概述

该集合是Java集合框架的顶层接口,其主要子接口为List接口和Set接口。


常用方法

添加

booleanadd(Ee)

booleanaddAll(Collection<?extendsE>c)
删除

booleanremove(Objecto)

booleanremoveAll(Collection<?>c)

booleanretainAll(Collection<?>c)
判断是否包含

booleancontains(Objecto)

booleancontainsAll(Collection<?>c)
清空

voidclear()
获取迭代器

Iterator<E>iterator()
判断空和获取大小

booleanisEmpty()

intsize()


示例

Collectioncoll1=newArrayList();
Collectioncoll2=newArrayList();
booleanb=true;
//1.添加
b=coll1.add("Java1");//类型提升
b=coll1.add("Java2");
b=coll1.add("Java3");
//coll1:[Java1,Java2,Java3]
b=coll2.add("Java4");
b=coll2.addAll(coll1);
//添加coll1中所有不同的元素到coll2中,[Java4,Java1,Java2,Java3]
//2.删除
b=coll2.remove("Java2");//coll2:[Java4,Java1,Java3]
//coll1移除所有和coll2相同的元素
b=coll1.removeAll(coll2);//coll1:[Java2]
//coll1移除所有和coll2不同的元素
b=coll1.retainAll(coll2);//coll1:null
//3.判断是否包含
b=coll1.contains("Java2");//true
b=coll2.containsAll(coll1);//false
//4.清空
coll1.clear();
//5.自动装箱(Java5支持),相当于coll.add(Integer.valueOf(3));
coll1.add(3);
coll1.add("Java");
coll1.add(3.14);
coll1.add(true);
//coll1:[3,Java,3.14,true]



集合迭代


概述

迭代是取出元素的一种方式,类似于数组的遍历。
由于集合元素的获取具有共性,一般都需要判断,获取每一个元素,更灵活的获取元素等功能,所以向上抽取为Iterator接口。
集合的迭代需要使用迭代器,由于Collection接口继承了Iterator接口,所以Java集合框架中的单列集合均具有获取该集合迭代器的方法。


方法

判断集合中是否还有下一个元素

booleanhasNext()
获取下一个元素

Enext()
移除该元素

defaultvoidremove()

一般使用for循环来使用迭代器,如果需要遍历集合,也可以使用增强的for循环。当然,使用while也是可以的。


示例

Collectionc=newArrayList();
b=c.add("Java1");
b=c.add("Java2");
b=c.add("Java3");
for(Iteratorit=c.iterator();it.hasNext();){
Stringstr=(String)it.next();
System.out.print(str+"");
}
System.out.println();
for(Objectobject:c){
Stringstr=(String)object;
System.out.print(str+"");
}
System.out.println();
Iteratorit=c.iterator();
while(it.hasNext()){
Stringstr=(String)it.next();
System.out.print(str+"");
}


运行结果

Java1Java2Java3

Java1Java2Java3

Java1Java2Java3


注意

迭代器基本替代了Vector类中的Enumeration。
迭代器如果没有使用泛型,那么获得的是Object类型,需要向下转型。
next方法是自动向下取元素,要避免出现NoSuchElementException。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: