java关于集合类
一、单列集合
1. Collection
相关方法
| 方法 | 说明 |
|---|---|
boolean add(E e) | 把给定的对象添加到当前集合中 |
void clear() | 清空集合中所有的元素 |
boolean remove(E e) | 把给定的对象在当前集合中删除 |
boolean contains(Object obj) | 判断当前集合中是否包含给定的对象 |
boolean isEmpty() | 判断当前集合是否为空 |
int size() | 返回集合中元素的个数 / 集合的长度 |
2. List
相关方法
| 方法 | 说明 |
|---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
3. ArrayList
相关方法
| 方法 | 说明 |
|---|---|
| boolean add(E e) | 添加元素,返回值表示是否添加成功 |
| boolean remove(E e) | 删除指定元素,返回值表示是否删除成功 |
| E remove(int index) | 删除指定索引的元素,返回被删除元素 |
| E set(int index,E e) | 修改指定索引下的元素,返回原来的元素 |
| E get(int index) | 获取指定索引的元素 |
| int size() | 集合中元素的数量 |
遍历方式
迭代器
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator it = list.iterator();
while(it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}
列表迭代器
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
ListIterator listIterator = list.listIterator();
while(listIterator.hasNext()) {
System.out.println(listIterator.next());
}
}
增强for
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for(String s : list) {
System.out.println(s);
}
}
lambda表达式遍历
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.forEach(s -> System.out.println(s));
}
普通for
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
4. LinkedList
相关方法
| 方法 | 说明 |
|---|---|
void addFirst(E e) | 在该列表开头插入指定的元素 |
void addLast(E e) | 将指定的元素追加到此列表的末尾 |
E getFirst() | 返回此列表中的第一个元素 |
E getLast() | 返回此列表中的最后一个元素 |
E removeFirst() | 从此列表中删除并返回第一个元素 |
E removeLast() | 从此列表中删除并返回最后一个元素 |
5. Set
相关方法
继承于Collection
6. HashSet
相关方法
继承于Set
特点:无序、不重复、无索引
7. LinkedHashSet
相关方法
继承于Set
特点:有序、不重复、无索引
8. TreeSet
相关方法
| 方法 | 作用 |
|---|---|
E first() | 获取最小元素 |
E last() | 获取最大元素 |
E lower(E e) | 获取 小于 e 的最大元素 |
E higher(E e) | 获取 大于 e 的最小元素 |
E floor(E e) | 获取 小于等于e 的最大元素 |
E ceiling(E e) | 获取 大于等于e 的最小元素 |
SortedSet | 获取 [from, to) 区间元素 |
SortedSet | 获取小于 to 的元素 |
SortedSet | 获取大于等于 from 的元素 |
特点:可排序、不重复、无索引
排序方式
方式一
在javaBean中实现Comparable接口指定排序规则
方式二
创建TreeSet对象时,传递比较器Comparable指定规则
单列集合使用场景
1. 如果想要集合中的元素可重复
用ArrayList集合,基于数组的。(用的最多)
2. 如果想要集合中的元素可重复,而且当前的增删操作明显多于查询用LinkedList集合,基于链表的。
3. 如果想对集合中的元素去重用HashSet集合,基于哈希表的。(用的最多)
4. 如果想对集合中的元素去重,而且保证存取顺序用LinkedHashSet集合,基于哈希表和双链表,效率低于HashSet。
5. 如果想对集合中的元素进行排序用TreeSet集合,基于红黑树。后续也可以用List集合实现排序
二、双列集合
1. Map
相关方法
| 方法 | 说明 |
|---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中键值对的个数 |
2. HashMap
相关方法
继承于Map
遍历方式
键找值
public static void main(String[] args) {
HashMap map = new HashMap<>();
map.put("A","65");
map.put("B","66");
map.put("C","67");
Set keys = map.keySet();
for (String key : keys) {
String value = map.get(key);
System.out.println(key + " = " + value);
}
}
键值对
public static void main(String[] args) {
HashMap map = new HashMap<>();
map.put("A", "65");
map.put("B", "66");
map.put("C", "67");
Set> entries = map.entrySet();
for (Map.Entry entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "=" + value);
}
}
Lambda表达式
public static void main(String[] args) {
HashMap map = new HashMap<>();
map.put("A","65");
map.put("B","66");
map.put("C","67");
// 完整版
map.forEach(new BiConsumer() {
@Override
public void accept(String key, String value) {
System.out.println(key + "=" + value);
}
});
System.out.println("----------------------------------");
// 简写版
map.forEach((String key, String value)->{
System.out.println(key + "=" + value);
});
}
3. LinkedHashMap
相关方法
继承于HashMap
4. TreeMap
相关方法
| 方法 | 说明 |
|---|---|
K firstKey() | 返回最小 key |
K lastKey() | 返回最大 key |
K lowerKey(K key) | 返回小于 key 的最大 key |
K higherKey(K key) | 返回大于 key 的最小 key |
K floorKey(K key) | 返回 ≤ key 的最大 key |
K ceilingKey(K key) | 返回 ≥ key 的最小 key |
SortedMap | 返回子 Map |
SortedMap | 返回子 Map |
SortedMap | 返回子 Map |
Comparator super K> comparator() | 返回比较器(null = 自然排序) |
排序规则
方式一
在javaBean中实现Comparable接口指定排序规则
方式二
创建TreeSet对象时,传递比较器Comparable指定规则
三、Collections工具类
相关方法
| 方法 | 说明 |
|---|---|
static | 批量添加元素 |
static void shuffle(List> list) | 打乱 List 集合元素的顺序 |
static | 排序 |
static | 根据指定的规则进行排序 |
static | 以二分查找法查找元素 |
static | 拷贝集合中的元素 |
static | 使用指定的元素填充集合 |
static | 根据默认的自然排序获取最大 或小值 |
static | 交换集合中指定位置的元素 |
四、不可变集合
相关方法
| 方法 | 说明 |
|---|---|
static | 创建一个不可变的 List |
static | 创建一个不可变的 Set(无重复元素) |
static | 创建一个不可变 Map |
static | 根据已有集合创建不可变 List |
static | 根据已有集合创建不可变 Set |
static | 根据已有 Map 创建不可变 Map |






