- 浏览: 85169 次
- 性别:
- 来自: 北京
最新评论
-
zhulongxia:
您好,请问您的服务端的配置和用flex写客户端的配置一样么?还 ...
Red5 Client 调用 Red5 Server -
zhaoleiJE:
public static String toMPTree(S ...
jave -
zouwu85:
你好,你这个能录制网络上的flv小游戏的数据吗?
使用Red5 录制视频 -
emilyHong:
不过有没有多条线的?
js曲线图 -
amssy_zhu:
很好,正准备开发这样的系统
使用Java实现Comet风格的Web应用
1.2 Collection
1.2.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 它仅仅只是一个接口,而我们真正使用的时候,确是创建该接口的一个实现类。做为集合的接口,它定义了所有属于集合的类所都应该具有的一些方法。
而ArrayList (列表)类是集合类的一种实现方式。
这里需要一提的是,因为Collection的实现基础是数组,所以有转换为Object数组的方法:
Object[] toArray()
Object[] toArray(Object[] a)
其中第二个方法Object[] toArray(Object[] a) 的参数 a 应该是集合中所有存放的对象的类的父类。
1.2.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讲解中得到进一步的介绍。
发表评论
-
red5检测流量
2010-07-16 17:27 1333@Override public void strea ... -
red5共享对象
2010-07-16 17:21 1800package ChatSystem; import java ... -
red5+hibernate
2010-07-16 17:18 1396Application 代码: package conjs.i ... -
使用Red5 录制视频
2010-07-16 17:17 4648import java.io.File; import or ... -
Red5实现直播
2010-07-16 17:14 9870发布端(Publish): var nc:NetConnect ... -
Red5 Client 调用 Red5 Server
2010-07-16 17:02 2913package com.conjs; import org. ... -
jave
2010-07-14 10:56 1317JAVE (Java Audio Video Encoder) ... -
nutch+solr
2010-07-13 17:52 1592两年前集成Nutch 和Solr 这两个Apache Luc ... -
ActiveMQ
2010-07-13 17:44 46251. 背景 ... -
red5的一些概念
2010-07-09 10:52 1291IConnection 是连接的意思 并且有getClient ... -
red5的eclipse插件地址
2010-07-09 10:05 1171Name: Red5Plugin 0.2.x (Eclipse ... -
uuid
2010-07-06 17:55 1076java uuid生成方法 UUID(Universally ... -
Java集合排序及java集合类详解:集合框架中常用类比较
2010-07-01 14:06 1979用 “ 集合框架 ” 设计软件时,记住该框架四个 ... -
Java集合排序及java集合类详解:Set
2010-07-01 14:04 14821.5 Set 1.5.1 概述 ... -
Java集合排序及java集合类详解:Map
2010-07-01 14:02 21601.4 Map 1.4.1 概 ... -
Java集合排序及java集合类详解:集合框架概述
2010-07-01 13:47 12911.1 集 ... -
关于 Java Collections API 您不知道的 5 件事,第 2 部分
2010-06-29 13:57 677java.util 中的 Collection ... -
关于 Java Collections API 您不知道的 5 件事,第 1 部分
2010-06-29 13:55 799对于很多 Java 开发人员 ... -
关于 Java 对象序列化您不知道的 5 件事
2010-06-29 11:59 863数年前,当和一个软件团队一起用 Java 语言编写一个应用程序 ... -
使用 Apache MINA 开发高性能网络应用程序
2010-06-29 11:41 900本文将通过一个简单的问候程序 HelloServer 来介绍 ...
相关推荐
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
Java集合排序及java集合类详解(Collection、List、Map、Set).pdf
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。它提供了一种灵活的数据结构,支持多种类型的容器,包括列表(List)、集(Set)和映射(Map)...
Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 Java集合框架是Java语言中最重要的组件之一,能够正确使用Java集合框架对于Java程序的开发具有无比的好处。本文将详细解释Java集合框架的实现原理、...
Java集合排序及java集合类详解 Java集合框架是Java编程语言中极其重要的一部分,它提供了存储和操作数据的高效方式。本文将深入探讨Java集合框架的四大核心组件:`Collection`、`List`、`Map`和`Set`,以及它们的...
Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...
Java集合框架分为两大类:Collection和Map。Collection接口是所有单值容器的父接口,包括List和Set。Map接口则用于存储键值对,不直接继承自Collection。 **2. Collection** Collection是最基本的接口,它是所有单...