Java集合
 # Java集合
Java集合是Java中用于存储、管理和访问集合数据的容器。Java集合主要分为以下几种:
- List:列表,元素有序、可重复。
 - Set:集合,元素无序、不可重复。
 - Map:映射,元素是键值对,键不可重复。
 
Java集合的特点:
- 集合中的元素可以重复,但集合本身不允许重复。
 - 集合中的元素可以按顺序访问,但集合本身不保证元素的顺序。
 - 集合中的元素可以按索引访问,但集合本身不保证元素的索引。
 - 集合中的元素可以动态增删,但集合本身不保证元素的动态增删。
 
Java集合的接口:
- Collection:集合接口,定义了集合的基本操作。
 - List:列表接口,继承于Collection接口,定义了列表的基本操作。
 - Set:集合接口,继承于Collection接口,定义了集合的基本操作。
 - Map:映射接口,继承于Collection接口,定义了映射的基本操作。
 
# List接口
List接口是Java集合框架中最常用的接口之一,它代表一个有序的集合,元素可以重复。List接口提供了对元素进行增删改查的各种方法,包括:
- add(E e):在列表的末尾添加一个元素。
 - add(int index, E element):在指定位置添加一个元素。
 - remove(int index):删除指定位置的元素。
 - set(int index, E element):修改指定位置的元素。
 - get(int index):获取指定位置的元素。
 - size():获取列表的大小。
 - contains(Object o):判断列表中是否包含指定元素。
 - indexOf(Object o):获取指定元素在列表中的索引。
 - isEmpty():判断列表是否为空。
 - clear():清空列表。
 
# List接口的实现类
List接口有很多实现类,常用的有:
- ArrayList:ArrayList是List接口的主要实现类,它是一个动态数组,可以自动扩容。
 - LinkedList:LinkedList是List接口的另一个实现类,它是一个双向链表,可以快速地插入、删除元素。
 - Vector:Vector是ArrayList的线程安全版本,它是List接口的古老实现类。
 - Stack:Stack是Vector的子类,它是一个栈,可以模拟堆栈的操作。
 
# 代码示例
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class ListExample {
    public static void main(String[] args) {
        // 创建ArrayList
        List<String> list = new ArrayList<>();
        // 添加元素
        list.add("apple");
        list.add("banana");
        list.add("orange");
        list.add("grape");
        // 遍历元素
        for (String fruit : list) {
            System.out.println(fruit);
        }
        // 遍历元素(索引)
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        // 遍历元素(迭代器)
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        // 删除元素
        list.remove(1);
        // 修改元素
        list.set(2, "pear");
        // 判断元素是否存在
        System.out.println(list.contains("banana"));
        // 获取元素索引
        System.out.println(list.indexOf("orange"));
        // 清空列表
        list.clear();
    }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Set接口
Set接口是Java集合框架中另一个常用的接口,它代表一个无序的集合,元素不可重复。Set接口提供了对元素进行增删查的各种方法,包括:
- add(E e):在集合中添加一个元素。
 - remove(E e):从集合中删除一个元素。
 - contains(Object o):判断集合中是否包含指定元素。
 - size():获取集合的大小。
 - isEmpty():判断集合是否为空。
 - clear():清空集合。
 
# Set接口的实现类
Set接口有很多实现类,常用的有:
- HashSet:HashSet是Set接口的主要实现类,它是一个哈希表,可以快速地查找元素。
 - LinkedHashSet:LinkedHashSet是HashSet的子类,它是一个有序的哈希表,可以快速地查找元素。
 - TreeSet:TreeSet是SortedSet接口的主要实现类,它是一个有序的集合,可以快速地查找元素。
 
# 代码示例
import java.util.HashSet;
import java.util.Set;
public class SetExample {
    public static void main(String[] args) {
        // 创建HashSet
        Set<String> set = new HashSet<>();
        // 添加元素
        set.add("apple");
        set.add("banana");
        set.add("orange");
        set.add("grape");
        // 遍历元素
        for (String fruit : set) {
            System.out.println(fruit);
        }
        // 删除元素
        set.remove("banana");
        // 判断元素是否存在
        System.out.println(set.contains("orange"));
        // 清空集合
        set.clear();
    }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Map接口
Map接口是Java集合框架中最复杂的接口,它代表一个键值对的集合,键不可重复。Map接口提供了对键值对进行增删查的各种方法,包括:
- put(K key, V value):添加一个键值对。
 - remove(K key):删除指定键的键值对。
 - get(K key):获取指定键的键值对。
 - containsKey(Object key):判断是否包含指定键。
 - containsValue(Object value):判断是否包含指定值。
 - size():获取映射的大小。
 - isEmpty():判断映射是否为空。
 - clear():清空映射。
 - keySet():获取映射中的所有键。
 - values():获取映射中的所有值。
 - entrySet():获取映射中的所有键值对。
 - equals(Object obj):判断两个映射是否相等。
 - hashCode():获取映射的哈希值。
 - toString():获取映射的字符串表示。
 - clone():复制映射。
 - putAll(Map<? extends K,? extends V> m):将指定映射中的所有键值对添加到当前映射中。
 - replace(K key, V value):替换指定键的键值对。
 - replace(K key, V oldValue, V newValue):替换指定键的键值对,并返回旧值。
 - replaceAll(BiFunction<? super K,? super V,? extends V> function):使用指定的函数替换映射中的所有键值对。
 
# Map接口的实现类
Map接口有很多实现类,常用的有:
- HashMap:HashMap是Map接口的主要实现类,它是一个哈希表,可以快速地查找键值对。
 - LinkedHashMap: LinkedHashMap是HashMap的子类,它是一个有序的哈希表,可以快速地查找键值对。
 - TreeMap:TreeMap是SortedMap接口的主要实现类,它是一个有序的映射,可以快速地查找键值对。
 - ConcurrentHashMap:ConcurrentHashMap是HashMap的线程安全版本,它是一个线程安全的哈希表,可以快速地查找键值对。
 
# 代码示例
import java.util.HashMap;
import java.util.Map;
public class MapExample {
    public static void main(String[] args) {
        // 创建HashMap
        Map<String, Integer> map = new HashMap<>();
        // 添加键值对
        map.put("apple", 1);
        map.put("banana", 2);
        map.put("orange", 3);
        map.put("grape", 4);
        // 遍历键值对
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
        // 删除键值对
        map.remove("banana");
        // 获取键值对
        System.out.println(map.get("orange"));
        // 判断键是否存在
        System.out.println(map.containsKey("grape"));
        // 判断值是否存在
        System.out.println(map.containsValue(3));
        // 清空映射
        map.clear();
    }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
最后更新时间: 2024/12/26, 17:56:54