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提供了兩個重載的方法,其聲明分別如下:
-
public static <T extends Comparable<? super T>> void sort(List<T> list):對List集合的元素進行排序,採用默認的排序規則
-
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
該方法的作用是返回該集合中最大元素。該方法有兩個重載的方法,其聲明分別如下:
-
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll):按照默認的自然排序獲取集合中最大的元素
-
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);
}
}
執行結果如下圖所示: