Java操作集合工具类-Collections常用方法总结

Java提供了一个操作集合的工具类:Collections,该类提供了一些常见的对集合(的操作。今天我就来简单总结一下。

操作顺序

  • reverse

该方法的声明为:

public static void reverse(List<?> list)

使用该方法可以将一个List集合的顺序进行翻转。示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<String> list = new ArrayList<>();
        list.add("Tom");
        list.add("Jerry");
        list.add("Spike");

        System.out.println("翻转前:" + list);
        Collections.reverse(list);
        System.out.println("翻转后:" + list);
    }
}

执行结果如下图所示:

  • shuffle

该方法的声明如下:

public static void shuffle(List<?> list)

该方法的作用是将List集合的元素的顺序进行打乱处理。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<String> list = new ArrayList<>();
        list.add("Tom");
        list.add("Jerry");
        list.add("Spike");

        System.out.println("打乱顺序前:" + list);
        Collections.shuffle(list);
        System.out.println("打乱顺序后:" + list);
    }
}

执行结果如下图所示:

  • sort

Collectors提供了两个重载的方法,其声明分别如下:

  1. public static <T extends Comparable<? super T>> void sort(List<T> list):对List集合的元素进行排序,采用默认的排序规则
  2. public static <T> void sort(List<T> list, Comparator<? super T> c):对List集合的元素进行排序,采用传入的比较器进行排序

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(5);
        list.add(2);
        list.add(9);

        // 使用默认规则排序
        Collections.sort(list);
        System.out.println("采用默认规则排序后:" + list);

        // 采用自定义规则排序
        Collections.sort(list, ((o1, o2) -> o2 - o1));
        System.out.println("采用自定义规则排序后:" + list);
    }
}

执行结果如下图所示:

  • swap

该方法的作用是对List集合指定的两个索引的值进行交换。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<String> list = new ArrayList<>();
        list.add("Tom");
        list.add("Jerry");
        list.add("Spike");
        list.add("Tony");

        System.out.println("交换前:" + list);
        // 交换索引1和3处的值,也就是Jerry和Tony互换
        Collections.swap(list, 1, 3);
        System.out.println("交换后:" + list);
    }
}

执行结果如下图所示:

  • rotate

该方法的作用是将List集合的元素旋转指定距离。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<String> list = new ArrayList<>();
        list.add("Tom");
        list.add("Jerry");
        list.add("Spike");
        list.add("Tony");

        System.out.println("旋转前:" + list);
        // 交换索引1和3处的值,也就是Jerry和Tony互换
        Collections.rotate(list, 3);
        System.out.println("旋转后:" + list);

    }
}

执行结果如下图所示:

查找、统计

  • binarySearch

该方法的作用是利用二分法查找List集合中的某个元素的索引,当然,前提是该集合是个有序的集合,否则会造成查找结果不准确。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(5);
        list.add(2);
        list.add(9);

        Collections.sort(list);
        System.out.println(list);
        System.out.println(Collections.binarySearch(list, 9));
    }
}

执行结果如下图所示:

  • max

该方法的作用是返回该集合中最大元素。该方法有两个重载的方法,其声明分别如下:

  1. public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll):按照默认的自然排序获取集合中最大的元素
  2. public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp):按照指定的比较器获取集合中最大的元素。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(5);
        list.add(2);
        list.add(9);

        Integer max = Collections.max(list);
        System.out.println("max:" + max);

        System.out.println("============================");

        List<String> list2 = new ArrayList<>();
        list2.add("Tom");
        list2.add("Jerry");
        list2.add("Tony");

        String max2 = Collections.max(list2, Comparator.comparing(String::length));
        System.out.println("max:" + max2);
    }
}

执行结果如下图所示:

  • min

min的作用与max类似,只不过是获取集合中最小都有元素。这里就不进行举例,大家类比max的使用即可。

  • fill

该方法的作用是用指定的值填充集合。

示例代码如下所示:


public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(5);
        list.add(2);
        list.add(9);

        System.out.println("填充前为:" + list);
        Collections.fill(list, 0);
        System.out.println("填充后为:" + list);
    }
}

执行结果如下图所示:

  • frequency

该方法的作用是返回集合中某个值出现的次数。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(5);
        list.add(2);
        list.add(5);
        list.add(9);
        list.add(5);

        System.out.println("5出现的次数为:" + Collections.frequency(list, 5));
    }
}

执行结果如下图所示:


  • replaceAll

该方法的作用是用指定的新值替换掉对应的旧值。

示例代码如下所示:

public class TestCollections {

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(5);
        list.add(2);
        list.add(5);
        list.add(9);
        list.add(5);

        System.out.println("替换前:" + list);
        Collections.replaceAll(list, 5, 0);
        System.out.println("替换后:" + list);
    }
}

执行结果如下图所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章