[学习笔记]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+"");
}
运行结果
Java1Java2Java3Java1Java2Java3
Java1Java2Java3
注意
迭代器基本替代了Vector类中的Enumeration。迭代器如果没有使用泛型,那么获得的是Object类型,需要向下转型。
next方法是自动向下取元素,要避免出现NoSuchElementException。
相关文章推荐
- 疯狂java学习笔记1030---Collection、Iterator接口和Set接口
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
- 学习笔记一:UIImage初始化方法以及点击UICollectionView和遇到点击的TableViewCell
- ASP学习笔记(6)--Response对象以及方法
- JAVA学习笔记之Collection
- JAVA学习笔记(六)接口
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)(转载)
- 原创-IBM DB2学习笔记-1:日期以及时间的使用
- J2EE学习笔记六:本地与远程接口
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- COM入门(学习笔记) - 简单接口调用
- JAVA学习笔记之Collection
- IDE(ATA)接口学习笔记
- Jpcap包的学习笔记(四)打开网络接口设备[网卡设备]
- Asp.Net Ajax 学习笔记10 JavaScript的原生类型以及Microsoft AJAX Library的相关扩展(下)
- BDA驱动学习笔记(6):错误处理,内存管理以及字符串
- 设计模式学习笔记4:对接口进行包装的Adapter
- ASP学习笔记(16)--Add and update对象以及date和time
- Oracle 学习过程中的笔记以及几个问题
- Spring学习以及测试程序笔记