Nếu bạn muốn tìm thấy trùng lặp, thay vì chỉ xóa chúng, một cách tiếp cận sẽ là ném Bộ sưu tập vào một mảng, sắp xếp mảng thông qua một Trình so sánh thực hiện tiêu chí của bạn, sau đó đi thẳng qua mảng, tìm kiếm cho các bản sao liền kề.
Dưới đây là một phác thảo (không kiểm tra):
MyComparator myComparator = new MyComparator();
MyType[] myArray = myList.toArray();
Arrays.sort(myArray, myComparator);
for (int i = 1; i < myArray.length; ++i) {
if (0 == myComparator.compare(myArray[i - 1], myArray[i])) {
// Found a duplicate!
}
}
Edit: Từ nhận xét của bạn, bạn chỉ muốn biết nếu có là bản sao. Cách tiếp cận ở trên cũng hoạt động cho điều này. Nhưng bạn có thể đơn giản chỉ cần tạo một java.util.SortedSet với một Comparator tùy chỉnh. Dưới đây là một phác thảo:
MyComparator myComparator = new MyComparator();
TreeSet treeSet = new TreeSet(myComparator);
treeSet.addAll(myCollection);
boolean containsDuplicates = (treeSet.size() != myCollection.size());
Nguồn
2012-05-25 14:08:59
Bạn muốn chỉ định tiêu chí trùng lặp theo cách nào? Là một vị từ nhị phân? – NPE
Bạn có muốn * tìm * các từ khóa trùng lặp hoặc xóa * chúng không? –
@ AndyThomas-Cramer Trên thực tế nó sẽ là đủ chỉ để biết nếu có bản sao. –