查看: 1660|回复: 7
打印 上一主题 下一主题

全面接触Java集合框架

[复制链接]

1026

主题

1

听众

6011

积分

高级设计师

Rank: 6Rank: 6

纳金币
5996
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2011-7-26 22:54:06 |只看该作者 |倒序浏览
 Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。





Java 2集合框架图



  集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。



  抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。



  实现类:8个实现类(实线表示),对接口的具体实现。



  在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;因此,允许您更改基本的数据结构而不必改变其它代码。



  · Collection 接口是一组允许重复的对象。



  · Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。



  · List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。



  · Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。



  · 容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。





  Java 2简化集合框架图

集合接口



  1.Collection 接口



  用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。







  (1) 单元素添加、删除操作:



   boolean add(Object o):将对象添加给集合



   boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o



  (2) 查询操作:



   int size() :返回当前集合中元素的数量



   boolean isEmpty() :判断集合中是否有任何元素



   boolean contains(Object o) :查找集合中是否含有对象o



   Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素



  (3) 组操作 :作用于元素组或整个集合



   boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素



   boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合



   void clear(): 删除集合中所有元素



   void removeAll(Collection c) : 从集合中删除集合c 中的所有元素



   void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素



  (4) Collection转换为Object数组 :



   Object[] toArray() :返回一个内含集合所有元素的array



   Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array和参数a的型别相同,需要转换为正确型别。



  此外,您还可以把集合转换成其它任何其它的对象数组。但是,您不能直接把集合转换成基本数据类型的数组,因为集合必须持有对象。



  “斜体接口方法是可选的。因为一个接口实现必须实现所有接口方法,调用程序就需要一种途径来知道一个可选的方法是不是不受支持。如果调用一种可选方法时,一个 UnsupportedOperationException 被抛出,则操作失败,因为方法不受支持。此异常类继承 RuntimeException 类,避免了将所有集合操作放入 try-catch 块。”



  Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。



  1.1.AbstractCollection 抽象类



  AbstractCollection 类提供具体“集合框架”类的基本功能。虽然您可以自行实现 Collection 接口的所有方法,但是,除了iterator()和size()方法在恰当的子类中实现以外,其它所有方法都由 AbstractCollection 类来提供实现。如果子类不覆盖某些方法,可选的如add()之类的方法将抛出异常。



  1.2.Iterator 接口



  Collection 接口的iterator()方法返回一个 Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection 中除去适当的元素。







  (1) boolean hasNext(): 判断是否存在另一个可访问的元素



    Object next(): 返回要访问的下一个元素。如果到达集合结尾,则抛出NoSuchElementException异常。



  (2) void remove(): 删除上次访问返回的对象。本方法必须紧跟在一个元素的访问后执行。如果上次访问后集合已被修改,方法将抛出IllegalStateException。



  “Iterator中删除操作对底层Collection也有影响。”



  迭代器是 故障快速修复(fail-fast)的。这意味着,当另一个线程修改底层集合的时候,如果您正在用 Iterator 遍历集合,那么,Iterator就会抛出 ConcurrentModificationException (另一种 RuntimeException异常)异常并立刻失败。

集合接口



  1.Collection 接口



  用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。







  (1) 单元素添加、删除操作:



   boolean add(Object o):将对象添加给集合



   boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o



  (2) 查询操作:



   int size() :返回当前集合中元素的数量



   boolean isEmpty() :判断集合中是否有任何元素



   boolean contains(Object o) :查找集合中是否含有对象o



   Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素



  (3) 组操作 :作用于元素组或整个集合



   boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素



   boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合



   void clear(): 删除集合中所有元素



   void removeAll(Collection c) : 从集合中删除集合c 中的所有元素



   void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素



  (4) Collection转换为Object数组 :



   Object[] toArray() :返回一个内含集合所有元素的array



   Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array和参数a的型别相同,需要转换为正确型别。



  此外,您还可以把集合转换成其它任何其它的对象数组。但是,您不能直接把集合转换成基本数据类型的数组,因为集合必须持有对象。



  “斜体接口方法是可选的。因为一个接口实现必须实现所有接口方法,调用程序就需要一种途径来知道一个可选的方法是不是不受支持。如果调用一种可选方法时,一个 UnsupportedOperationException 被抛出,则操作失败,因为方法不受支持。此异常类继承 RuntimeException 类,避免了将所有集合操作放入 try-catch 块。”



  Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。



  1.1.AbstractCollection 抽象类



  AbstractCollection 类提供具体“集合框架”类的基本功能。虽然您可以自行实现 Collection 接口的所有方法,但是,除了iterator()和size()方法在恰当的子类中实现以外,其它所有方法都由 AbstractCollection 类来提供实现。如果子类不覆盖某些方法,可选的如add()之类的方法将抛出异常。



  1.2.Iterator 接口



  Collection 接口的iterator()方法返回一个 Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection 中除去适当的元素。







  (1) boolean hasNext(): 判断是否存在另一个可访问的元素



    Object next(): 返回要访问的下一个元素。如果到达集合结尾,则抛出NoSuchElementException异常。



  (2) void remove(): 删除上次访问返回的对象。本方法必须紧跟在一个元素的访问后执行。如果上次访问后集合已被修改,方法将抛出IllegalStateException。



  “Iterator中删除操作对底层Collection也有影响。”



  迭代器是 故障快速修复(fail-fast)的。这意味着,当另一个线程修改底层集合的时候,如果您正在用 Iterator 遍历集合,那么,Iterator就会抛出 ConcurrentModificationException (另一种 RuntimeException异常)异常并立刻失败。

集合接口



  1.Collection 接口



  用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。







  (1) 单元素添加、删除操作:



   boolean add(Object o):将对象添加给集合



   boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o



  (2) 查询操作:



   int size() :返回当前集合中元素的数量



   boolean isEmpty() :判断集合中是否有任何元素



   boolean contains(Object o) :查找集合中是否含有对象o



   Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素



  (3) 组操作 :作用于元素组或整个集合



   boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素



   boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合



   void clear(): 删除集合中所有元素



   void removeAll(Collection c) : 从集合中删除集合c 中的所有元素



   void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素



  (4) Collection转换为Object数组 :



   Object[] toArray() :返回一个内含集合所有元素的array



   Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array和参数a的型别相同,需要转换为正确型别。



  此外,您还可以把集合转换成其它任何其它的对象数组。但是,您不能直接把集合转换成基本数据类型的数组,因为集合必须持有对象。



  “斜体接口方法是可选的。因为一个接口实现必须实现所有接口方法,调用程序就需要一种途径来知道一个可选的方法是不是不受支持。如果调用一种可选方法时,一个 UnsupportedOperationException 被抛出,则操作失败,因为方法不受支持。此异常类继承 RuntimeException 类,避免了将所有集合操作放入 try-catch 块。”



  Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。



  1.1.AbstractCollection 抽象类



  AbstractCollection 类提供具体“集合框架”类的基本功能。虽然您可以自行实现 Collection 接口的所有方法,但是,除了iterator()和size()方法在恰当的子类中实现以外,其它所有方法都由 AbstractCollection 类来提供实现。如果子类不覆盖某些方法,可选的如add()之类的方法将抛出异常。



  1.2.Iterator 接口



  Collection 接口的iterator()方法返回一个 Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection 中除去适当的元素。







  (1) boolean hasNext(): 判断是否存在另一个可访问的元素



    Object next(): 返回要访问的下一个元素。如果到达集合结尾,则抛出NoSuchElementException异常。



  (2) void remove(): 删除上次访问返回的对象。本方法必须紧跟在一个元素的访问后执行。如果上次访问后集合已被修改,方法将抛出IllegalStateException。



  “Iterator中删除操作对底层Collection也有影响。”



  迭代器是 故障快速修复(fail-fast)的。这意味着,当另一个线程修改底层集合的时候,如果您正在用 Iterator 遍历集合,那么,Iterator就会抛出 ConcurrentModificationException (另一种 RuntimeException异常)异常并立刻失败。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

沙发
发表于 2012-1-17 16:51:56 |只看该作者
人过留名!
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-2-19 23:28:34 |只看该作者
读铁系缘分,顶铁系友情
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-6-25 23:19:36 |只看该作者
再看一看,再顶楼主
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-10-5 23:24:30 |只看该作者
既来之,则看之!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-10-30 23:19:05 |只看该作者
我就看看,我不说话
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2013-2-5 23:28:34 |只看该作者
不会吧,太恐怖了
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2013-3-18 23:20:14 |只看该作者
佩服,好多阿 ,哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-6-17 17:36 , Processed in 0.073059 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部