- 浏览: 98027 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
鸟气凌人:
最经正在看基础
Oracle PL/SQL中游标和游标变量的使用 -
matraxa:
讲得很清楚,顶一个!
JVM垃圾回收机制总结(1) —基本概念 -
ZavaKid:
顶楼主,通俗易懂。
byw,上面的图用什么软件画的?
JVM垃圾回收机制总结(1) —基本概念 -
47478220:
对这里还不太了解,学习了。
Java 虚拟机体系结构
1、Collection
1.1、常用方法
Collection 接口用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。Collection 在前面的大图也可以看出,它是List和Set 的父类。并且它本身也是一个接口。它定义了作为集合所应该拥有的一些方法。如下:
注意:
集合必须只有对象,集合中的元素不能是基本数据类型。
Collection接口支持如添加和除去等基本操作。设法除去一个元素时,如果这个元素存在,除去的仅仅是集合中此元素的一个实例。
boolean add(Object element)
boolean remove(Object element)
Collection 接口还支持查询操作:
int size()
boolean isEmpty()
boolean contains(Object element)
Iterator iterator()
组操作 :Collection 接口支持的其它操作,要么是作用于元素组的任务,要么是同时作用于整个集合的任务。
boolean containsAll(Collection collection)
boolean addAll(Collection collection)
void clear()
void removeAll(Collection collection)
void retainAll(Collection collection)
containsAll() 方法允许您查找当前集合是否包含了另一个集合的所有元素,即另一个集合是否是当前集合的子集。其余方法是可选的,因为特定的集合可能不支持集合更改。 addAll() 方法确保另一个集合中的所有元素都被添加到当前的集合中,通常称为并。 clear() 方法从当前集合中除去所有元素。 removeAll() 方法类似于 clear() ,但只除去了元素的一个子集。 retainAll() 方法类似于 removeAll() 方法,不过可能感到它所做的与前面正好相反:它从当前集合中除去不属于另一个集合的元素,即交。
我们看一个简单的例子,来了解一下集合类的基本方法的使用:
import java.util.*;
public class CollectionToArray { public static void main(String[] args) { Collection collection1 = new ArrayList();// 创建一个集合对象 collection1.add("000");// 添加对象到Collection集合中 collection1.add("111"); collection1.add("222"); System.out.println("集合collection1的大小:" + collection1.size()); System.out.println("集合collection1的内容:" + collection1); collection1.remove("000");// 从集合collection1中移除掉 "000" 这个对象 System.out.println("集合collection1移除 000 后的内容:" + collection1); System.out.println("集合collection1中是否包含000 :" + collection1.contains("000")); System.out.println("集合collection1中是否包含111 :" + collection1.contains("111")); Collection collection2 = new ArrayList(); collection2.addAll(collection1);// 将collection1 集合中的元素全部都加到collection2中 System.out.println("集合collection2的内容:" + collection2); collection2.clear();// 清空集合 collection1 中的元素 System.out.println("集合collection2是否为空 :" + collection2.isEmpty()); // 将集合collection1转化为数组 Object s[] = collection1.toArray(); for (int i = 0; i < s.length; i++) { System.out.println(s[i]); } } }
运行结果为:
集合collection1的大小:3
集合collection1的内容:[000, 111, 222]
集合collection1移除 000 后的内容:[111, 222]
集合collection1中是否包含000 :false
集合collection1中是否包含111 :true
集合collection2的内容:[111, 222]
集合collection2是否为空 :true
111
222
这里需要注意的是,Collection 它仅仅只是一个接口,而我们真正使用的时候,确是创建该接口的一个实现类。做为集合的接口,它定义了所有属于集合的类所都应该具有的一些方法。
这里需要一提的是,因为Collection的实现基础是数组,所以有转换为Object数组的方法:
Object[] toArray()
Object[] toArray(Object[] a)
其中第二个方法Object[] toArray(Object[] a) 的参数 a 应该是集合中所有存放的对象的类的父类。
1 .2、迭代器
任何容器类,都必须有某种方式可以将东西放进去,然后由某种方式将东西取出来。毕竟,存放事物是容器最基本的工作。对于ArrayList,add()是插入对象的方法,而get()是取出元素的方式之一。ArrayList很灵活,可以随时选取任意的元素,或使用不同的下标一次选取多个元素。
如果从更高层的角度思考,会发现这里有一个缺点:要使用容器,必须知道其中元素的确切类型。初看起来这没有什么不好的,但是考虑如下情况:如果原本是ArrayList ,但是后来考虑到容器的特点,你想换用Set ,应该怎么做?或者你打算写通用的代码,它们只是使用容器,不知道或者说不关心容器的类型,那么如何才能不重写代码就可以应用于不同类型的容器?
所以迭代器(Iterator)的概念,也是出于一种设计模式就是为达成此目的而形成的。所以Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。
迭代器(Iterator)本身就是一个对象,它的工作就是遍历并选择集合序列中的对象,而客户端的程序员不必知道或关心该序列底层的结构。此外,迭代器通常被称为“轻量级”对象,创建它的代价小。但是,它也有一些限制,例如,某些迭代器只能单向移动。
Collection 接口的 iterator() 方法返回一个 Iterator。Iterator 和您可能已经熟悉的 Enumeration 接口类似。使用 Iterator 接口方法,您可以从头至尾遍历集合,并安全的从底层 Collection 中除去元素。
下面,我们看一个对于迭代器的简单使用:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class IteratorDemo {
public static void main(String[] args) {
Collection collection = new ArrayList();
collection.add("s1");
collection.add("s2");
collection.add("s3");
Iterator iterator = collection.iterator();//得到一个迭代器
while (iterator.hasNext()) {//遍历
Object element = iterator.next();
System.out.println("iterator = " + element);
}
if(collection.isEmpty())
System.out.println("collection is Empty!");
else
System.out.println("collection is not Empty! size="+collection.size());
Iterator iterator2 = collection.iterator();
while (iterator2.hasNext()) {//移除元素
Object element = iterator2.next();
System.out.println("remove: "+element);
iterator2.remove();
}
Iterator iterator3 = collection.iterator();
if (!iterator3.hasNext()) {//察看是否还有元素
System.out.println("还有元素");
}
if(collection.isEmpty())
System.out.println("collection is Empty!");
//使用collection.isEmpty()方法来判断
}
}
程序的运行结果为:
iterator = s1
iterator = s2
iterator = s3
collection is not Empty! size=3
remove: s1
remove: s2
remove: s3
还有元素
collection is Empty!
可以看到,Java的Collection的Iterator 能够用来,:
1) 使用方法 iterator() 要求容器返回一个Iterator .第一次调用Iterator 的next() 方法时,它返回集合序列的第一个元素。
2) 使用next() 获得集合序列的中的下一个元素。
3) 使用hasNext()检查序列中是否元素。
4) 使用remove()将迭代器新返回的元素删除。
需要注意的是:方法删除由next方法返回的最后一个元素,在每次调用next时,remove方法只能被调用一次 。
大家看,Java 实现的这个迭代器的使用就是如此的简单。Iterator(跌代器)虽然功能简单,但仍然可以帮助我们解决许多问题,同时针对List 还有一个更复杂更高级的ListIterator。您可以在下面的List讲解中得到进一步的介绍。
发表评论
-
Java异常错误收集
2011-06-27 14:30 1209算术异常类:ArithmeticExe ... -
Java方法参数是引用调用还是值调用?
2011-01-31 15:06 843方法调用(call by) ... -
类与对象的初始化问题
2011-01-31 15:05 952★ 类常量 Java类常量(final修饰) ... -
Java动态绑定机制的内幕
2011-01-31 15:04 685在Java方法调用的过程中,JVM是如何知道调用的是 ... -
Java代理机制
2011-01-31 15:03 718代理(Proxy)实际上是一种设计模式。代理模式的作用是: ... -
你所不知道的Java序列化
2011-01-31 15:00 957我们都知道,Java序列化可以让我们记录下运行时的对象状态(对 ... -
杂谈Java异常处理
2011-01-31 14:58 746软件开发中一个古老的说法是:80%的工作使用2 ... -
Java类型间的转型
2011-01-31 14:55 883★ 基本数据类型间的 ... -
String in Java
2011-01-31 14:53 638作者:每次上网冲杯Java时,都能看到关于String无休无止 ... -
Java集合类详解(一):集合框架概述
2010-12-01 14:24 13961、集合框架概述1.1、容器简介 到目前为止,我们已经 ... -
java集合类详解(三):List
2010-12-01 14:21 11801、List1.1、概述 前面我们讲述的Collect ... -
java集合类详解(四):Map
2010-12-01 14:19 20291、Map 1.1、概述 ... -
java集合类详解(五):Set
2010-12-01 14:09 9161.1、概述 Java 中的Set和正好和数学上直观 ... -
详解 HashCode
2010-11-12 14:03 877hashcode的作用就是为了快速查找集合中是否存在重复元素。 ... -
Java堆.栈和常量池学习
2010-11-12 14:01 10201.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程 ... -
集合 中Iterator 、Vector、ArrayList、List 使用深入剖析
2010-11-12 10:03 1122线性表,链表,哈希表是常用的数据结构,在进行Java ... -
MyEclipse使用小技巧
2010-11-11 20:31 704第一步: 取消自动validation validat ...
相关推荐
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
Java集合排序及java集合类详解(Collection、List、Map、Set)
Java集合排序及java集合类详解(Collection、List、Map、Set
Java集合排序及java集合类详解(Collection、List、Map、Set).pdf
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf
Java集合排序及java集合类详解(Collection、List、Map、Set)借鉴.pdf
Java集合排序及java集合类详解(Collection、List、Map、Set)
Java里面最重要,最常用也就是集合一部分了。能够用好集合和理 解好集合对于做Java程序的开发拥有无比的好处。本文详细解释了关 于Java中的集合是如何实现的, 以及他们的实现原理。
Java集合整体讲解,其中包含了Collection,Map,Iterator和一些工具类,以及集合整体大框架
java集合类Collection、List、Set、Map的用法详解,很好的资源!
下面小编就为大家带来一篇java集合 collection-list-LinkedList详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
031301_【第13章:Java类集】_认识类集、Collection接口笔记.pdf 031302_【第13章:Java类集】_List接口笔记.pdf 031303_【第13章:Java类集】_LinkedList类笔记.pdf 031304_【第13章:Java类集】_Set接口笔记.pdf ...
Java集合排序及java集合类详解 (Collection, List, Set, Map)