主要总结Java中集合相关的知识,若有错误,欢迎更正🤣。
Java集合
collection常用功能
Collection是所有单列集合的父接口,Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可以操作所有的单列集合。方法如下:
public boolean add(E e): 把给定的对象添加到当前集合中 。public void clear(): 清空集合中所有的元素。public boolean remove(E e): 把给定的对象在当前集合中删除。public boolean contains(E e): 判断当前集合中是否包含给定的对象。public boolean isEmpty(): 判断当前集合是否为空。public int size(): 返回集合中元素的个数。public Object[] toArray(): 把集合中的元素,存储到数组中。
iterator迭代器
1. 迭代的概念
- 迭代:Collection集合元素的通用获取方式。在取出元素之前要先判断集合中有没有元素,如果有,就把这个元素取出来,继续判断,如果还有就再取出来。一直把集合中的所有元素全部取出来。这种取出方式专业术语称为迭代。
2. iterator接口的常用方法
public E next(): 返回迭代的下一个元素。public boolean hasNext: 如果仍有元素可以迭代,则返回true。
3. 增强for循环
- 专门用来遍历数组和集合的,内部原理其实是一个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。格式为:
for(type var : collection集合 or 数组){ ... }
List
List是Collection集合的子接口,不但继承了Collection接口中的方法,而且增加一些根据元素索引来操作集合的特有方法
1. List接口特点
- 它是一个元素存取有序的集合。
- 它是一个带有索引的集合,通过索引就可以精确操作集合中的元素
- 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素
2. List接口中常用方法
public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。public E get(int index):返回集合中指定位置的元素。public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
3. ArrayList集合(List子类)
- 数据存储的格式是数组结构。元素增删慢,查找快。
4. LinkedList集合(List子类)
- 数据存储的结构是链表结构。元素增删快,查询慢。
- 里边包含了大量操作首尾元素的方法。
public void addFirst(E e):将指定元素插入此列表的开头。public void addLast(E e):将指定元素添加到此列表的结尾。public void push(E e):将元素推入此列表所表示的堆栈。public E getFirst():返回此列表的第一个元素。public E getLast():返回此列表的最后一个元素。public E removeFirst():移除并返回此列表的第一个元素。public E removeLast():移除并返回此列表的最后一个元素。public E pop():从此列表所表示的堆栈处弹出一个元素。public boolean isEmpty():如果列表不包含元素,则返回true。
tips:使用LinkedList集合特有的方法,不能使用多态。
Set
同样继承自Collection接口,与Collection接口中的方法基本一致。
1. Set接口特点
- 不允许存储重复的元素。
- 没有索引,没有带索引的方法,也不能用普通的for循环遍历。
2. HashSet(Set实现)
- 根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。保证元素唯一性的方式依赖于hashCode与equals方法。
tips:必须重写hashCode和equals方法。
3. LinkedHashSet(Set实现)
- 数据为链表+哈希表组合的存储结构。
- 元素放入取出是有顺序的。
可变参数
当方法参数列表已经确定,但是参数个数不确定时,可以用可变参数。格式为:
修饰符 返回值类型 method_name(type ...var){
方法体
}
- 一个方法的参数列表,只能有一个参数变量。
- 如果方法的参数有多个,那么可变参数必须写在参数列表末尾。
Map
1. Map集合特点
- Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)。
- Map集合中的元素,key和value的数据类型可以相同,也可以不同。
- Map集合中的元素,key是不允许重复的,value是可以重复的。
- Map集合中的元素,key和value是一一对应。
2. HsahMap(Map实现)
- HashMap集合底层是哈希表:查询的速度特别的快。
- hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致。
3. LinkedHashMap(HsahMap实现)
- LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)。
- LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的。
JDK9新特性
List、Set、Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素。
static <E> List<E> of(E... elements):一次性添加多个元素。
- of方法只适用于List接口,Set接口,Map接口,不适用于接接口的实现类。
- of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,否则会抛出异常。
- Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常。