对于 Comparable<>
的实现我正在寻找一种方法来比较 Collection<boolean[]>
的两个实例。我已经在比较 boolean[]
通过创建一个整数表示(101 == 5),所以我将范围缩小到比较两个 Collection<Integer>
的。
我该如何去做呢?
简单地比较每个整数是行不通的,因为给定 collectionA = {1, 2}; collectionB = {2,1}
,以下示例给出 cmp == 0
,而集合肯定是不同的。
int cmp = 0;
for(Integer a : collectionA)
for(Integer b : collectionB)
cmp += Integer.compare(a, b);
我还有什么其他选择?我并不关心它们是如何排序的,只是关心它们以一致的方式排序。这些集合可能有不同的大小。
编辑:
我真的在寻找int compare()
,不是 equals()
。我的应用程序的实际结构的更具体的示例如下所示
class MyArray implements Comparable<MyArray> {
boolean[] array;
int compareTo(MyArray another) {
// This is implemented
}
}
class MyCollection implements Comparable<MyCollection> {
SortedSet<MyArray> collection;
int compareTo(MyCollection another) {
// Looking for this implementation
}
}
最佳答案
以与比较字符串相同的方式比较列表:首先比较第一个整数,如果它们相等,则检查第二个整数,依此类推,直到找到不同的整数或到达列表末尾。
for(int i = 0; i < min(listA.size(), listB.size()); i++) {
int diff = listA.get(i) - listB.get(i);
if(diff != 0) return diff;
}
return listA.size() - listB.size();
请注意,这仅在您的 Collection 已订购时才有效。
关于java - 比较整数集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20567442/