1. รายการวิธีการ

โปรดจำไว้ว่าผู้สร้างของ Java เขียนคลาสตัวช่วยทั้งหมดArraysเพื่อความสะดวกของเราเมื่อทำงานกับอาร์เรย์

พวกเขาทำสิ่งเดียวกันสำหรับคอลเลกชัน Java มีjava.util.Collectionsคลาสที่มีเมธอดมากมายที่เป็นประโยชน์สำหรับการทำงานกับคอลเลกชัน นี่เป็นเพียงสิ่งที่น่าสนใจที่สุด:

วิธีการ คำอธิบาย
addAll(colls, e1, e2, e3, ...)
เพิ่มองค์ประกอบe1, e2, e3, ... ลงในcollsคอลเลกชัน
fill(list, obj)
แทนที่องค์ประกอบทั้งหมดในรายการที่ผ่านด้วยobj
nCopies(n, obj)
ส่งกลับรายการnสำเนาของobjวัตถุ
replaceAll(list, oldVal, newVal)
แทนที่ อินสแตนซ์ทั้งหมดของรายการoldValด้วยnewVallist
copy(dest, src)
คัดลอกองค์ประกอบทั้งหมดจากsrcรายการไปยังdestรายการ
reverse(list)
ย้อนกลับรายการ
sort(list)
เรียงลำดับรายการจากน้อยไปหามาก
rotate(list, n)
เลื่อนองค์ประกอบของlistรายการตามnองค์ประกอบ
shuffle(list)
สุ่มสับเปลี่ยนองค์ประกอบในรายการ
min(colls)
ค้นหาองค์ประกอบขั้นต่ำในcollsคอลเลกชัน
max(colls)
ค้นหาองค์ประกอบสูงสุดในcollsคอลเลกชัน
frequency(colls, obj)
กำหนดจำนวนครั้งที่objองค์ประกอบเกิดขึ้นในcollsคอลเลกชัน
binarySearch(list, key)
ค้นหาkeyในรายการที่เรียงลำดับและส่งกลับดัชนีที่เกี่ยวข้อง
disjoint(colls1, colls2)
ส่งคืนtrueหากคอลเลกชันไม่มีองค์ประกอบที่เหมือนกัน
สำคัญ:

วิธีการเหล่านี้จำนวนมากไม่ได้ใช้ArrayList, HashSetและHashMapคลาสต่อ se แต่ใช้อินเทอร์เฟซที่สอดคล้องกัน: Collection<T>, List<T>, Map<K, V>.

นี่ไม่ใช่ปัญหา: หากเมธอดยอมรับ a List<T>คุณสามารถส่งต่อได้เสมอArrayList<Integer>แต่โอเปอเรเตอร์การกำหนดไม่ทำงานในทิศทางตรงกันข้าม


2. การสร้างและแก้ไขคอลเลกชัน

Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)วิธี

วิธีaddAll()การเพิ่มองค์ประกอบe1, e2, e3, ... ไปยังcollsคอลเล็กชัน สามารถส่งผ่านองค์ประกอบจำนวนเท่าใดก็ได้

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

for (int i: list)
   System.out.println(i);
1
2
3
4
5

Collections.fill(List<T> list, T obj)วิธี

เมธอดfill()จะแทนที่องค์ประกอบทั้งหมดของlistคอลเลกชันด้วยobjองค์ประกอบ

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.fill(list, 10);

for (int i: list)
   System.out.println(i);
10
10
10

Collections.nCopies(int n, T obj)วิธี

เมธอดnCopies()ส่งคืนรายการnสำเนาของobjองค์ประกอบ โปรดทราบว่ารายการที่ส่งคืนจะไม่เปลี่ยนรูป ซึ่งหมายความว่าคุณไม่สามารถเปลี่ยนแปลงได้! คุณสามารถใช้เพื่ออ่านค่าเท่านั้น:

รหัส คำอธิบาย
List<String> immutableList = Collections.nCopies(5, "Hello");

ArrayList<String> list = new ArrayList<String>(immutableList);

for(String s: list)
   System.out.println(s);
สร้างรายการที่ไม่เปลี่ยนรูปของ 5 Helloสตริง
สร้างรายการที่ไม่เปลี่ยนรูปlistและเติมด้วยค่าจากimmutableListรายการ

เอาต์พุตคอนโซล:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)วิธี

เมธอด จะ แทนที่replaceAll()องค์ประกอบทั้งหมดในlistคอลเล็กชันเท่ากับoldValueด้วยnewValue

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.replaceAll(list, 2, 20);

for (int i: list)
   System.out.println(i);
1
20
3

Collections.copy (List<T> dest, List<T> src)วิธี

เมธอดcopy()คัดลอกองค์ประกอบทั้งหมดของsrcคอลเล็กชันลงในdestคอลเล็กชัน

หากdestคอลเลกชั่นเริ่มต้นนานกว่าsrcคอลเลกชั่น องค์ประกอบที่เหลือของdestคอลเลกชั่นจะยังคงอยู่

สำคัญ:
คอdestลเลกชันต้องมีความยาวอย่างน้อยเท่ากับsrcการรวบรวม (มิฉะนั้นIndexOutOfBoundsExceptionจะถูกโยนทิ้ง)
รหัส เอาต์พุตคอนโซล
ArrayList<Integer> srcList = new ArrayList<Integer>();
Collections.addAll(srcList, 99, 98, 97);

ArrayList<Integer> destList = new ArrayList<Integer>();
Collections.addAll(destList, 1, 2, 3, 4, 5, 6, 7);

Collections.copy(destList, srcList);

for (int i: destList)
   System.out.println(i);
99
98
97
4
5
6
7


3. ลำดับขององค์ประกอบ

Collections.reverse(List<T> list)วิธี

วิธีreverse()การกลับลำดับขององค์ประกอบของรายการที่ผ่าน

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.reverse(list);

for (int i: list)
   System.out.println(i);
5
4
3
2
1

Collections.sort(List<T> list)วิธี

เมธอดsort()จะเรียงลำดับรายการที่ส่งผ่านจากน้อยไปหามาก

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

Collections.sort(list);

for (int i: list)
   System.out.println(i);
2
4
11
15
23

Collections.rotate(List<T> list, int distance)วิธี

วิธีการ นี้rotate()จะเปลี่ยนองค์ประกอบของรายการที่ส่งผ่านตามdistanceตำแหน่งไปข้างหน้า

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // Shift by 3 positions

for (int i: list)
   System.out.println(i);
7
8
9
1
2
3
4
5
6

Collections.shuffle(List<T> list)วิธี

วิธีshuffle()การสุ่มสับเปลี่ยนองค์ประกอบทั้งหมดของรายการที่ผ่าน ผลลัพธ์แตกต่างกันทุกครั้ง

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // Shuffle the elements

for (int i: list)
   System.out.println(i);
5
2
4
3
1


4. การค้นหาองค์ประกอบในคอลเลกชัน

Collections.min(Collection<T> colls)วิธี

เมธอดmin()ส่งกลับองค์ประกอบขั้นต่ำในคอลเล็กชัน

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

Collections.max(Collection<T> colls)วิธี

เมธอดmax()ส่งกลับองค์ประกอบสูงสุดในคอลเล็กชัน

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

Collections.frequency(Collection<T> colls, T obj)วิธี

วิธีfrequency()การนับจำนวนครั้งที่objองค์ประกอบเกิดขึ้นในcollsคอลเลกชัน

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15, 4, 2, 4);

int count = Collections.frequency(list, 4);

System.out.println(count);
3

Collections.binarySearch(Collection<T> colls, T obj)วิธี

วิธีbinarySearch()การค้นหาองค์ประกอบobjในcollsคอลเลกชัน ส่งกลับดัชนีขององค์ประกอบที่พบ ส่งกลับจำนวนลบหากไม่พบองค์ประกอบ

สำคัญ:
ก่อนเรียกใช้binarySearch()เมธอด ต้องเรียงลำดับคอลเล็กชัน (ใช้Collections.sort())
รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 5, 15, 4, 2, 4);

Collections.sort(list);  // 2, 2, 4, 4, 5, 11, 15, 23

int index = Collections.binarySearch(list, 5);    // 4
System.out.println(index);

int index2 = Collections.binarySearch(list, 15);  // 6
System.out.println(index2);

int index3 = Collections.binarySearch(list, 16); // The element doesn't exist
System.out.println(index3);
4
6
-8

Collections.disjoint(Collection<T> coll1, Collection<T> coll2)วิธี

เมธอดdisjoint()จะส่งคืนtrueหากคอลเล็กชันที่ผ่านไม่มีองค์ประกอบใดๆ ที่เหมือนกัน

รหัส เอาต์พุตคอนโซล
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);

ArrayList<Integer> list2 = new ArrayList<Integer>();
Collections.addAll(list2, 99, 98, 97);

boolean isDifferent = Collections.disjoint(list, list2);
System.out.println(isDifferent);
true