【学习日记】集合框架知识点总结(1)--Collection

集合用来存储多个其他对象的对象,不能保存简单的类型。
集合框架结构图为:
【学习日记】集合框架知识点总结(1)--Collection
主要分为Collection、Map和工具类。

Collection和Map的结构框架:
Collection
┣List
┃ ┣─LinkedList
┃ ┣─ArrayList
┃ ┗─Vector
┗Set
┣─HashSet
┗━TreeSet
Map
┣─HashMap
┗─TreeMap

Collection是一个集合接口,其有两个子接口,分别是List和Set。

List接口

该类集合里的元素是有序的,元素可以重复,该集合体系有索引
List集合下有三个集合类,分别是ArrayList、LinkedList和Vector。

数据结构 特点
ArrayList 数组结构 查询速度很快,增删稍慢,线程不同步
LinkedList 链表结构 增删速度很快,查询稍慢,线程不同步
Vector(已过时) 数组结构 线程同步,效率较低

List的常用方法

add(element / index,element);向集合尾部或指定位置添加元素
addAll(Collection / index,Collection);将指定集合中的元素添加到该集合的尾部或指定位置
remove(index);移除该集合指定位置的元素
set(index,element);用指定元素替换指定位置的元素
查(获取)
get(index):返回指定位置的元素
subList(from,to);返回列表中指定位置之间的部分视图。
listIterator();返回此列表元素的列表迭代器
indexOf(obj):获取指定元素的第一次出现的位置。如不存在返回-1。

Set接口

该集合的元素是无序(存入和取出的顺序不一定一致),元素不可以重复,该集合没有索引

数据结构 特点 要求
HashSet 哈希表 线程不同步 先后通过hashCode()equal()来判断元素是否相同,可根据需要来覆盖这两个方法
TreeSet 二叉树 线程不同步,可对元素进行排序 排序方式一:实现Comparable接口,重写compareTo方法。排序方式二:创建比较器,实现Comparator接口,覆盖构造方法compare方法

TreeSet排序的两种方式

第一种方式:让元素自身具备比较性。
    元素需要实现Comparable接口,覆盖compareTo方法。也种方式也成为元素的自然顺序,或者叫做默认顺序。
第二种排序方式。
    当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。即:覆盖TreeSet构造函数里的比较方法。定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。在集合初始化时,就有了比较方式。

  当两种排序都存在时,以比较器为主。定义一个类,实现Comparator接口,覆盖TreeSet类里的构造compare方法。
  记住,排序时,当主要条件相同时,一定判断一下次要条件。还有,compare方法比较的结果只是等于零,小于零,或等于零。并不是1,-1,0,只有自己构造的compare为了方便自己定的是1,-1,0。

迭代器

集合的取出元素的方式。

  迭代器是取出方式,会直接访问集合中的元素。所以将迭代器通过内部类的形式来进行描述。通过容器的iterator()方法获取该内部类的对象。
  

迭代器常用的方法

判断
Boolean hasNext();如果仍有元素可以迭代,则返回 true。
取出
String Next();返回迭代的下一个元素。
注意:每当使用该方法,则迭代器会自动迭代。即it.next();使用后,再使用it.next();时就已经是下一个数据了。所以使用it.next();最好将其传给obj,然后对obj进行操作。
删除
void Remove();从迭代器指向的 collection 中移除迭代器返回的最后一个元素。