Collection集合
- 一: 集合概述
- 二:Collection集合解析
- 三:List集合
- 1:实现类ArrayList
- <1>方法说明
- <2>并发修改异常
- <3>ListIterator(列表迭代器)
- <4>增强for循环
- 验证内部实现原理
- 2:实现类LinkedList
- <方法说明>
- 1:实现类ArrayList
- 四:Set集合
- 1:实现类HashSet
- 哈希值浅说
- <1 HashSet的数据结构
- <2>方法说明
- <1存储不重复
- <2输出不保证无序
- <3> 哈希表浅说
- 2:实现类LinkedHashSet
- <1>方法说明
- 3:实现类TreeSet
- <1>方法说明
- <1>默认的自然排序方式(默认调用无参构造器)
- <2>自然排序Comparable的使用
- <3>比较器Comparator的使用
- <1>方法说明
- 1:实现类HashSet
- 五:小应用
- 1:输入字符串统计其中各个字符出现的次数
- 2:模拟斗地主发牌洗牌
- --jgdabc(兰舟千帆)
一: 集合概述
集合和数组的区别是什么? 数组也是java中的一种数据结构,数据的长度是固定的,存储方式是线性的。并且是可以存储基本的数据类型和对象,基本数据对象可以按照基本类型的装箱处理并存储。而我们的数组是属于引用数据类型的。 集合是java中的另外一种数据i结构,相比数组,集合是更加灵活的。从实现方式上,集合的实现方式多样,适用范围比较广,数组采用的是空间连续分配存储的方式。 另外,集合采用了类和接口的形式,具有java面向对象的三大特征,比较数组更加明显地体现了面向对象地逻辑思维。 java中的集合分为单列集合和双列集合,Collection是单列集合的顶层接口,Map是双列集合的顶层接口。从基本的存储上讲,单列存储的数据只包含了数据本身,而双列是包含键和值的,也就是双列不仅存储数据本身,也存储所对应的索引。本文主要介绍单列集合Collection,以及其下面的部分子接口。
一般我们会学习这两种基本的List,Set,但是实际上,还有一种。本文将Collection的三种接口实现类全部说明。
二:Collection集合解析
我们的JDK API是这样对Collection概述的。
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。 包 (bag) 或多集合 (multiset)(可能包含重复元素的无序 collection)应该直接实现此接口。 所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的 Collection 实现都遵从它。 **
这里提到了它的具体的实现接口类,Set,List。
另外,文档还很专业的说明了以下需要注意的地方
Collections Framework 接口中的很多方法是根据 equals 方法定义的。例如,contains(Object o) 方法的规范声明:“当且仅当此 collection 包含至少一个满足 (onull ? enull