java集合工具类 Collections基本使用

发布时间 2023-12-28 10:31:21作者: DHaiLin

Collections 为 ListSetMap 等集合类定义了相应的空集合常量

// 空 List
Collections.emptyList();
// 空 Set
Collections.emptySet();
// 空 Map
Collections.emptyMap();

一个元素的集合

// List
List<String> list = Collections.singletonList("Hello");
// Set
Set<String> set = Collections.singleton("Hello");
// Map
Map<String, Integer> map = Collections.singletonMap("Hello", 100);

不可变集合

// List
List<String> list = Collections.unmodifiableList(l);
// Set
Set<String> set = Collections.unmodifiableSet(s);
// Map
Map<String, Integer> map = Collections.unmodifiableMap(m);

线程安全集合

// List
List<String> list = Collections.synchronizedList(l);
// Set
Set<String> set = Collections.synchronizedSet(s);
// Map
Map<String, Integer> map = Collections.synchronizedMap(m);

批量增加

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Collections.addAll(list, 1, 2, 3);
    // 输出:[1,2,3]
    System.out.println(list);
}

将集合中的所有元素填充为指定元素。

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Collections.addAll(list, 1, 2, 3);
    Collections.fill(list, 10);
    // 输出:[10,10,10]
    System.out.println(list);
}

交换位置

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Collections.addAll(list, 1, 2, 3);
    Collections.swap(list, 0, 1);
    // 输出:[2,1,3]
    System.out.println(list);
}

排序

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Collections.addAll(list, 3, 2, 1);
    Collections.sort(list);
    // 输出:[1,2,3]
    System.out.println(list);
}

也可以使用自定义 Comparator 进行排序,比如,下例中使用字符串的长度进行排序。

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    Collections.addAll(list, "Hello", "Hi", "H");
    // 输出:[H, Hi, Hello]
    Collections.sort(list, Comparator.comparing(String::length));
    System.out.println(list);
}

直接使用 List.sort() 方法就可以了,Collections.sort 方法没有使用的必要。

逆序

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Collections.addAll(list, 3, 2, 1);
    Collections.reverse(list);
    // 输出:[1,2,3]
    System.out.println(list);
}

随机排序

使用 shuffle() 方法进行随机排序,发现每次输出的结果都不一样。

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Collections.addAll(list, 3, 2, 1);
    Collections.shuffle(list);
    System.out.println(list);
}