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);
    }
}

執行結果如下圖所示:

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