Collections (java.util.Collections) 工具類包含了很多有關集合操作的靜態方法,使用這些方法能幫我們簡化代碼。
1. 獲取List中的最小值
Java代碼
- List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99);
- // 6
- System.out.println(java.util.Collections.min(intList));
2. 獲取List中的最大值
Java代碼
- List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99);
- // 99
- System.out.println(java.util.Collections.max(intList));
3. Shuffle
Shuffle方法可以使一個集合的元素亂序化。比如,一副牌的集合爲cardList (類型List<Card>), 使用Collections.shuffle(cardList)就能使一副牌處於亂序,達到洗牌的目的。
Java代碼
- List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99);
- Collections.shuffle(intList);
- // 一次測試的結果
- // [6, 18, 33, 24, 99, 9]
- System.out.println(intList);
4. nCopies
該方法用於返回一個不可變列表組成的n個拷貝的指定對象。
Java代碼
- // 生成一個由10個100組成的整數列表
- List<Integer> nCopiesList = Collections.nCopies(10, 100);
- //[100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
- System.out.println(nCopiesList);
5. sort
該方法用於對集合排序。
Java代碼
- List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99);
- Collections.sort(intList);
上述例子沒有包含Comparator參數,。我們也可以結合Comparator對對象集合進行排序。 比如對存放Person類的對象集按照年齡進行排序。
Java代碼
- package com.thecodesmaple.example.collection;
- public class Person {
- private int age;
- private String firstName;
- private String lastName;
- public Person(int age, String firstName, String lastName) {
- this.age = age;
- this.firstName = firstName;
- this.lastName = lastName;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getFirstName() {
- return firstName;
- }
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
- public String getLastName() {
- return lastName;
- }
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
- public String toString() {
- return "Age: " + age + " FirstName " + firstName + " LastName: "
- + lastName;
- }
- }
Java代碼
- List<Person> personList = Arrays.asList(new Person(21, "Eric", "W"),
- new Person(17, "John", "A"), new Person(28, "Allan", "H"),
- new Person(15, "Jonas", "B"));
- // [Age: 21 FirstName Eric LastName: W, Age: 17 FirstName John LastName:
- // A, Age: 28 FirstName Allan LastName: H, Age: 15 FirstName Jonas
- // LastName: B]
- System.out.println(personList);
- Collections.sort(personList, new Comparator<Person>() {
- @Override
- public int compare(Person p1, Person p2) {
- return p1.getAge() - p2.getAge();
- }
- });
- // [Age: 15 FirstName Jonas LastName: B, Age: 17 FirstName John
- // LastName: A, Age: 21 FirstName Eric LastName: W, Age: 28 FirstName
- // Allan LastName: H]
- System.out.println("按照年齡排序後:");
- System.out.println(personList);
6. binarySearch Java代碼
7. copy 用兩個參數,一個目標 List 和一個源 List, 將源的元素拷貝到目標,並覆蓋它的內容。目標 List至少與源一樣長。 Java代碼
8. disJoint 用於檢查兩個集合有無相同的元素,如果沒有則返回true。
Java代碼
9. fill 使用指定元素替換指定列表中的所有元素 Java代碼
10. frequency 獲取某個元素在集合中出現的次數。 Java代碼
11. indexOfSubList 返回指定源列表中第一次出現指定目標列表的起始位置 Java代碼
12. lastIndexOfSubList 返回指定源列表中最後一次出現指定目標列表的起始位置 Java代碼
13. emptyXXX 請參考之前的文章 https://www.cnblogs.com/qiumingcheng/p/7126281.html |
14. checkedXXX
Java代碼
- List<String> stringList = Arrays.asList("A", "B", "C", "D");
- List<String> typeSafeList = Collections.checkedList(stringList, String.class);
- //[A, B, C, D]
- System.out.println(typeSafeList);
15. reverse
反轉列表中的元素順序。
Java代碼
- List<String> reverseCandidate = Arrays.asList("A", "B", "C");
- Collections.reverse(reverseCandidate);
- // [C, B, A]
- System.out.println(reverseCandidate);
16. replaceAll
Java代碼
- List<String> replaceAllCandidate = Arrays.asList("A", "B", "C");
- // 將A用Z代替
- Collections.replaceAll(replaceAllCandidate, "A", "Z");
- // [Z, B, C]
- System.out.println(replaceAllCandidate);
17. swap
指定一個目標集合以及兩個元素的索引,交換這兩個指定位置元素的值。
Java代碼
- List<String> swapCandidate = Arrays.asList("A", "B", "C");
- // 首尾元素交換
- Collections.swap(swapCandidate, 0, 2);
- // [C, B, A]
- System.out.println(swapCandidate);
18. synchronizedXXX
Java代碼
- Collection<String> c = Collections
- .synchronizedCollection(new ArrayList<String>());
- List<String> list = Collections
- .synchronizedList(new ArrayList<String>());
- Set<String> set = Collections.synchronizedSet(new HashSet<String>());
- Map<String, String> m = Collections
- .synchronizedMap(new HashMap<String, String>());
19. unmodifiableXXX
Java代碼
- List<String> unmodifiableList = Collections.unmodifiableList(Arrays
- .asList("A", "B", "C"));
- unmodifiableList.add("D");//此動作會拋異常
- // Exception in thread "main" java.lang.UnsupportedOperationException
- // at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
- // at
- // com.thecodesmaple.example.collection.CollectionsExample.main(CollectionsExample.java:149)
20. singletonXXX
Java代碼
- String init[] = { "One", "Two", "Three", "One", "Two", "Three" };
- List list1 = new ArrayList(Arrays.asList(init));
- List list2 = new ArrayList(Arrays.asList(init));
- list1.remove("One");
- // [Two, Three, One, Two, Three]
- System.out.println(list1);
- // [Two, Three, Two, Three]
- list2.removeAll(Collections.singleton("One"));
- System.out.println(list2);
21. rotate
根據指定的距離循環移動指定列表中的元素
Java代碼
- List<String> rotateList = Arrays.asList("A", "B", "C", "D", "E", "F");
- // [F, A, B, C, D, E]
- // Collections.rotate(rotateList, 1);
- // System.out.println(rotateList);
- Collections.rotate(rotateList, 3);
- // [D, E, F, A, B, C]
- System.out.println(rotateList);
22. reverseOrder
Java代碼
- List<String> reverseOrderTest = Arrays.asList("A", "B", "C", "D", "E",
- "F");
- Comparator c = Collections.reverseOrder();
- Collections.sort(reverseOrderTest, c);
- // [F, E, D, C, B, A]
- System.out.println(reverseOrderTest);