JAVA—集合框架

程序开发并不是解决了业务的基本功能就完成了,很多时候程序运行的环境是有限制的。比如内存小,CPU频率低,或者是像手机这样的设备,能源供应有限。在这种环境下,就需要程序能够在有限的环境中提升效率。这就需要使用数据结构和算法。

但是数据结构与算法即便是学过,也未必在工作时能够用好,而且通用性、性能等等也都是问题。加上学习程序开发的受众群体越来越广,让程序员全部自己实现数据结构与算法不是一个好的主意。所以现在很多语言为了能够提升学习效率,降低学习门槛,同时也为了让程序有更好的执行效率和通用性,就自带了各种实现了数据结构与算法的API集合。在Java中,这就是我们现在要学习的「集合框架」

与现在常见到的数据结构类库一样,Java也是将集合类库的接口(interface)与实现(implementation)分离。所以我们的学习方式一般都是先搞明白接口的分类和关系,然后根据不同的接口来学习对应的实现类。

使用集合做什么

1. 搬运数据,集合可以存储数据,然后通过API调用很方便就可以传递大量数据
2. 数据处理,集合中可以直接对数据进行操作,比如统计、去重
3. 排序,可以将数据按照需求进行各种排序,然后再传递给调用者

集合的分类

Java的集合从 Collection 接口和 Map 接口入手



Map 接口和 Collection 没有交集,它有自己的方式,只要标准库后缀不是Map 结尾的,都是直接或者间接实现了Collection接口。



Collection 接口中常见的操作是数据的添加、删除

1. add / addAll
2. remove / removeAll / removeIf

借助 Iterator 接口,Collection 还具备了数据的循环
public interface Collection extends Iterable{ 
    //... 
    //  对数据循环
    Iterator iterator();
}

通过 Iterable 接口, 标准库中的集合都可以使用 forEach 循环。

 具体的实现类
| 集合类型        | 描述                                                 |
| --------------- | ---------------------------------------------------- |
| ArrayList       | 一种可以动态增长和缩减的索引序列                     |
| LinkedList      | 一种可以在任何位置进行高效地插人和删除操作的有序序列 |
| ArrayDeque      | 一种用循环数组实现的双端队列                         |
| HashSet         | 一种没有重复元素的无序集合                           |
| TreeSet         | 一种有序集                                           |
| EnumSet         | 一种包含枚举类型值的集                               |
| LinkedHashSet   | 一种可以记住元素插人次序的集                         |
| PriorityQueue   | 一种允许高效删除最小元素的集合                       |
| HashMap         | 一种存储键/ 值关联的数据结构                         |
| TreeMap         | 一种键值有序排列的映射表                             |
| EnumMap         | 一种键值属于枚举类型的映射表                         |
| LinkedHashMap   | 一种可以记住腱/ 值项添加次序的映射表                 |
| WeakHashMap     | 一种其值无用武之地后可以被垃圾回收器回收的映射表     |
| IdentityHashMap | 一种用 == 而不是用equals 比较键值的映射表            |

你可能感兴趣的:(JAVA—集合框架)