首先:Collection是Java中,集合类(容器)的顶级接口,其根接口是Iterator。Collections,是集合类的一个工具类,为集合对象提供静态方法以实现对各种集合的搜索、排序、线程安全化等操作;Collections常用方法链接。就酱~。
所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:
1. hasNext()是否还有下一个元素。Boolean
2. next()返回下一个元素。Object
3. remove()删除当前元素。
|---- Collection集合
|---- List(允许插入多个重复元素或null,有序的)
|---- ArrayList: 底层数据结构是【动态数组】,效率高(非线程安全),随机访问速度快,但不便于增删(需要移动 数据,保存到新数组)。允许插入多个重复元素或null,并保持插入顺序。(去除重复数据:转换成 HashSet或LinkedHashSet,再转换回来)
|---- LinkedList: 底层数据结构是【双向链表】,随机访问速度慢,数据修改很方便(只需要移动指针)。允许插入多 个重复元素或null,并保持插入顺序。同时也符合Queue的先进先出特征、栈的先进后出特征等。
|---- Vector: 类似ArrayList,线程安全,因此消耗性能较多。
|---- Set(数据不重复,允许存储null)
|---- HashSet:哈希表(实际上是一个HashMap实例)支持,元素顺序无序。过存储元素的 hashCode 方法和 equals 方 法来确定元素是否重复。非线程安全,容量无限。
|---- LinkedHashSet:继承HashSet,基于LinkedHashMap来实现有序。非线程安全。
|---- TreeSet:底层用二叉树保持排序,元素顺序有序。非线程安全。
|---- Queue
|---- Map容器
|---- HashMap:使用数组和链表来实现对数据的存储。非同步的,没有对读写等操作进行锁保护,所以是线程不安全。
|---- LinkedHashMap:
|---- HashTable:线程安全,但性能消耗多,不允许存储null值(当key/value为null时,抛出异常NullPointerException)
|---- TreeMap:底层用二叉树排序,元素顺序有序。非线程安全。
Boolean add(Object obj) | 尾部添加元素 |
Boolean add(int index, Object obj) | 添加元素到index指定的位置 |
Object get(Integer index) | 获取指定位置元素 |
Integer size() | 返回集合元素长度 |
Object remove(int index) | 删除并返回指定位置的元素 // removeAll |
void clear() | 集合清空 |
Object set(Integer index, Object obj) | 指定元素替代指定位置的元素 |
Boolean contains(Object o) | 集合中是否包含指定元素对象 |
Object[] toArray() | 集合转数组(数组转集合:Arrays.asList(arrays)) |
Collection clone() | 复制集合本身并返回 |
Boolean isEmpty() | 判断集合是否为空,为空则返回true |
Integer indexOf(Object o) | 返回对象o所在集合的下标位置,若不存在返回-1 |
Integer lastIndexOf(Object o) | 返回最后一个对象o所在集合的下标位置,若不存在则返回-1 |
…… | …… |
list.forEach(a ->{
System.out.println(a);
}); //list遍历
map.forEach((k,v) -> {
System.out.println("key: " + k + ", value:" + v);
}); //map遍历