Các Phương Thức Trong Collections Thao Tác Với Nhiều Bộ Sưu Tập (Collection)
Các phương thức tĩnh trong lớp Collections cung cấp các tiện ích để thao tác với các bộ sưu tập khác nhau, bao gồm thêm phần tử, sao chép phần tử, kiểm tra sự trùng lặp, tìm phần tử lớn nhất hoặc nhỏ nhất, thay thế phần tử và đảo ngược thứ tự. Dưới đây là các phương thức có thể thao tác với các bộ sưu tập khác nhau:
↳ static <T> boolean addAll(Collection<? super T> c, T... elements): Thêm tất cả các phần tử đã cho vào bộ sưu tập đã cho.
↳ static <T> void copy(List<? super T> dest, List<? extends T> src): Sao chép tất cả các phần tử từ một danh sách vào danh sách khác.
↳ static boolean disjoint(Collection<?> c1, Collection<T?> c2): Trả về true nếu hai bộ sưu tập đã cho không có phần tử chung nào.
↳ static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll): Trả về phần tử lớn nhất của bộ sưu tập đã cho, theo thứ tự tự nhiên của các phần tử của nó.
↳ static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp): Trả về phần tử lớn nhất của bộ sưu tập đã cho, theo thứ tự được quy định bởi bộ so sánh đã cho.
↳ static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll): Trả về phần tử nhỏ nhất của bộ sưu tập đã cho, theo thứ tự tự nhiên của các phần tử của nó.
↳ static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp): Trả về phần tử nhỏ nhất của bộ sưu tập đã cho, theo thứ tự được quy định bởi bộ so sánh đã cho.
↳ static <T> boolean replaceAll(List<T> list, T oldVal, T newVal): Thay thế tất cả các lần xuất hiện của một giá trị đã cho trong một danh sách bằng một giá trị khác.
↳ static void reverse(List<?> list): Đảo ngược thứ tự của các phần tử trong danh sách đã cho.
↳ static <T> Comparator<T> reverseOrder(): Trả về một comparator áp đặt thứ tự ngược của thứ tự tự nhiên trên một bộ sưu tập các đối tượng thực hiện giao diện Comparable.
↳ static <T> Comparator<T> reverseOrder(Comparator<T> cmp): Trả về một comparator áp đặt thứ tự ngược của comparator đã cho.
Ví dụ minh họa phương thức thêm tất cả các phần tử đã cho vào bộ sưu tập đã cho.
Ví dụ: Example.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
Collections.addAll(list, "Apple", "Banana", "Orange");
System.out.println(list); // Output: [Apple, Banana, Orange]
}
}
Kết quả của chương trình là:
Phương thức addAll() có thể thêm phần tử vào bất kỳ bộ sưu tập nào thực hiện giao diện Collection, nhưng không thể dùng để thêm phần tử vào một Map.
Ví dụ minh họa phương thức sao chép tất cả các phần tử từ một danh sách vào danh sách khác.
Ví dụ: Example.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> src = Arrays.asList("One", "Two", "Three");
List<String> dest = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
Collections.copy(dest, src);
System.out.println(dest); // Output: [One, Two, Three, D]
}
}
Kết quả của chương trình là:
Phương thức copy sao chép các phần tử từ danh sách src vào danh sách dest. Các phần tử "One", "Two", và "Three" thay thế các phần tử tương ứng trong dest.
Ví dụ minh họa phương thức trả về true nếu hai bộ sưu tập không có phần tử chung nào.
Ví dụ: Example.java
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("Apple", "Banana");
List<String> list2 = Arrays.asList("Orange", "Grape");
boolean result = Collections.disjoint(list1, list2);
System.out.println(result); // Output: true
}
}
Kết quả của chương trình là:
Phương thức disjoint kiểm tra xem list1 và list2 có phần tử chung nào không. Kết quả là true vì không có phần tử nào chung.
Ví dụ minh họa phương thức trả về phần tử lớn nhất và nhỏ nhất của bộ sưu tập theo thứ tự tự nhiên.
Ví dụ: Example.java
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(10, 20, 5, 30);
int maxNumber = Collections.max(numbers);
System.out.println("Max number: " + maxNumber); // Output: Max number: 30
int minNumber = Collections.min(numbers);
System.out.println("Min number: " + minNumber); // Output: Min number: 5
}
}
Kết quả của chương trình là:
Ví dụ minh họa phương thức trả về phần tử lớn nhất và nhỏ nhất của bộ sưu tập theo thứ tự được quy định bởi Comparator đã cho.
Ví dụ: Example.java
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "pear", "grape");
String maxWord = Collections.max(words, Comparator.comparing(String::length));
System.out.println("Từ độ dài lớn nhất: " + maxWord);
String minWord = Collections.min(words, Comparator.comparing(String::length));
System.out.println("Từ độ dài nhỏ nhất: " + minWord);
}
}
Kết quả của chương trình là:
Từ độ dài nhỏ nhất: pear
Ví dụ minh họa phương thức thay thế tất cả các lần xuất hiện của một giá trị đã cho trong một danh sách bằng một giá trị khác.
Ví dụ: Example.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("apple"));
Collections.replaceAll(list, "apple", "banana");
System.out.println(list); // Output: [banana]
}
}
Kết quả của chương trình là:
Ví dụ minh họa phương thức đảo ngược thứ tự của các phần tử trong danh sách đã cho.
Ví dụ: Example.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("apple", "banana", "grape"));
Collections.reverse(list);
System.out.println(list); // Output: [grape, banana, apple]
}
}
Kết quả của chương trình là:
Ví dụ minh họa phương thức trả về một Comparator áp đặt thứ tự ngược của thứ tự tự nhiên.
Ví dụ: Example.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.sort(numbers, Collections.reverseOrder());
System.out.println(numbers); // Output: [5, 4, 3, 2, 1]
}
}
Kết quả của chương trình là:
Những ví dụ này minh họa cách sử dụng các phương thức trong Java Collections để thao tác với bộ sưu tập dữ liệu theo các yêu cầu khác nhau.
Như vậy, chúng ta đã tìm hiểu các phương thức của lớp Collections cho phép bạn thao tác với nhiều đối tượng Collection cùng lúc. Các phương thức này rất hữu ích để thêm, xóa, hoặc kiểm tra sự tồn tại của nhiều phần tử một cách hiệu quả, giúp bạn quản lý các bộ sưu tập phức tạp một cách dễ dàng và gọn gàng hơn trong Java.