- 浏览: 100484 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
鸟气凌人:
最经正在看基础
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 1241算术异常类:ArithmeticExe ... -
Java方法参数是引用调用还是值调用?
2011-01-31 15:06 864方法调用(call by) ... -
类与对象的初始化问题
2011-01-31 15:05 970★ 类常量 Java类常量(final修饰) ... -
Java动态绑定机制的内幕
2011-01-31 15:04 712在Java方法调用的过程中,JVM是如何知道调用的是 ... -
Java代理机制
2011-01-31 15:03 742代理(Proxy)实际上是一种设计模式。代理模式的作用是: ... -
你所不知道的Java序列化
2011-01-31 15:00 972我们都知道,Java序列化可以让我们记录下运行时的对象状态(对 ... -
杂谈Java异常处理
2011-01-31 14:58 764软件开发中一个古老的说法是:80%的工作使用2 ... -
Java类型间的转型
2011-01-31 14:55 908★ 基本数据类型间的 ... -
String in Java
2011-01-31 14:53 657作者:每次上网冲杯Java时,都能看到关于String无休无止 ... -
Java集合类详解(一):集合框架概述
2010-12-01 14:24 14171、集合框架概述1.1、容器简介 到目前为止,我们已经 ... -
java集合类详解(三):List
2010-12-01 14:21 12101、List1.1、概述 前面我们讲述的Collect ... -
java集合类详解(四):Map
2010-12-01 14:19 20651、Map 1.1、概述 ... -
java集合类详解(五):Set
2010-12-01 14:09 9421.1、概述 Java 中的Set和正好和数学上直观 ... -
详解 HashCode
2010-11-12 14:03 900hashcode的作用就是为了快速查找集合中是否存在重复元素。 ... -
Java堆.栈和常量池学习
2010-11-12 14:01 10421.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程 ... -
集合 中Iterator 、Vector、ArrayList、List 使用深入剖析
2010-11-12 10:03 1138线性表,链表,哈希表是常用的数据结构,在进行Java ... -
MyEclipse使用小技巧
2010-11-11 20:31 731第一步: 取消自动validation validat ...
相关推荐
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
### Java集合类详解总结 在Java编程中,集合框架(Collection Framework)是处理一组对象的强大工具,它提供了标准的数据结构来存储和操作这些对象。Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...
Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 Java集合框架是Java语言中最重要的组件之一,能够正确使用Java集合框架对于Java程序的开发具有无比的好处。本文将详细解释Java集合框架的实现原理、...
本文将深入讲解Java集合类,特别是Collection接口和其下的List、Set,以及Map接口中的几个重要实现类。 首先,我们来看Collection接口。Collection是最基本的集合接口,它代表一组Object,即它的元素。Collection...
Java集合排序及java集合类详解(Collection、List、Map、Set).pdf
### Java集合排序及java集合类详解(Collection、List、Map、Set) #### 集合框架概述 ##### 容器简介 在Java编程中,容器(Container)是指用来存储和管理对象的一种数据结构。随着应用程序复杂度的增加,简单地...
Java集合排序及java集合类详解 Java集合框架是Java编程语言中极其重要的一部分,它提供了存储和操作数据的高效方式。本文将深入探讨Java集合框架的四大核心组件:`Collection`、`List`、`Map`和`Set`,以及它们的...
### Java集合类详解 在Java编程中,集合类(Collections)是处理数据的重要工具,它们提供了灵活且高效的方式来存储、检索以及操作数据。Java集合框架主要包括两大类:`Collection`和`Map`。 #### Collection接口...
- `Collection`接口是所有集合类的根接口,分为`List`和`Set`两大分支。 - `List`接口包括`ArrayList`和`LinkedList`等实现,`ArrayList`适合随机访问,`LinkedList`适合频繁的插入和删除操作。 - `Map`接口用于...
Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。它提供了一种灵活的数据结构,支持多种类型的容器,包括列表(List)、集(Set)和映射(Map)...