首页 > 编程笔记 > Java笔记 阅读:2

Java Collections集合工具类的用法(附带实例)

Java里的集合工具类(Collections)是 JDK 为我们提供的用于操作 List、Set 和 Map 等集合的工具类,该类位于 java.util 包中,包含了很多用于操作集合的静态方法。

Java Collections排序操作

Collections 提供了方便对 List 进行排序的方法,通过它可以很方便地对 List 进行正向排序、逆向排序或随机排序。

例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(50);
        list.add(30);
        list.add(5);
        System.out.println("排序前:" + list);
        Collections.sort(list);
        System.out.println("正向排序后:" + list);
        Collections.reverse(list);
        System.out.println("逆向排序后:" + list);
        Collections.shuffle(list);
        System.out.println("随机排序:" + list);
        Collections.sort(list, new MyComparator());
        System.out.println("自定义比较器排序:" + list);
    }
}

class MyComparator implements Comparator<Integer> {
    public int compare(Integer s1, Integer s2) {
        if (s1 > s2)
            return 1;
        else if (s1 < s2)
            return -1;
        else
            return 0;
    }
}
输出结果为:

排序前:[20, 10, 50, 30, 5]
正向排序后:[5, 10, 20, 30, 50]
正向排序后:[50, 30, 20, 10, 5]
随机排序:[5, 30, 50, 20, 10]
自定义比较器排序:[5, 10, 20, 30, 50]

Java Collections获取最大和最小元素

如果想获取 List 对象或 Set 对象中的最大元素,则可以使用 Collections 类的 max() 方法,例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(50);
        list.add(30);
        list.add(5);
        System.out.println("List中最大的元素:" + Collections.max(list));
        Set<Integer> set = new HashSet<Integer>(list);
        System.out.println("Set中最大的元素:" + Collections.max(set));
    }
}
输出结果为:

List中最大的元素:50
Set中最大的元素:50


如果想获取 List 对象或 Set 对象中的最小元素,则可以使用 Collections 类的 min() 方法,例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(50);
        list.add(30);
        list.add(5);
        System.out.println("List中最小的元素:" + Collections.min(list));
        Set<Integer> set = new HashSet<Integer>(list);
        System.out.println("Set中最小的元素:" + Collections.min(set));
    }
}
输出结果为:

List中最小的元素:5
Set中最小的元素:5

Java Collections对集合进行填充

如果想对某个 List 对象的所有元素都修改为统一的值,可以使用 Collections 类的 fill() 方法,例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(50);
        list.add(30);
        list.add(5);
        System.out.println("填充前:" + list);
        Collections.fill(list, 100);
        System.out.println("填充后:" + list);
    }
}
输出结果为:

填充前:[20, 10, 50, 30, 5]
填充后:[100, 100, 100, 100, 100]

Java Collections计算某元素出现次数

如果想要计算某个 List 对象或 Set 对象中某个元素值出现的次数,可以使用 Collections 类的 frequency() 方法,例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(20);
        System.out.println("元素20出现的次数:" + Collections.frequency(list, 20));
    }
}
输出结果为:

元素20出现的次数:3

Java Collections替换所有元素

如果想要替换某个 List 对象中的元素,则可以使用 Collections 类的 replaceAll() 方法,所有指定值的元素都将会被替换。

例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(20);
        System.out.println("替换前:" + list);
        Collections.replaceAll(list, 20, 100);
        System.out.println("替换后:" + list);
    }
}
输出结果为:

替换前:[20, 10, 20, 30, 20]
替换后:[100, 10, 100, 30, 100]

Java Collections复制List对象

如果想将某个 List 对象的所有元素复制到另一个 List 对象中,可以使用 Collections 类的 copy() 方法。要注意的是两个 List 对象的长度一般要保持一致。

例如:
public class CollectionsTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(20);
        List<Integer> list2 = new ArrayList<Integer>();
        list2.add(0);
        list2.add(0);
        list2.add(0);
        list2.add(0);
        list2.add(0);
        System.out.println("复制前list2:" + list2);
        Collections.copy(list2, list);
        System.out.println("复制后list2:" + list2);
    }
}
输出结果为:

复制前list2:[0, 0, 0, 0, 0]
复制后list2:[20, 10, 20, 30, 20]

相关文章