java - 比较整数集合

标签 java compare

对于 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/

相关文章:

mysql查询与when语句比较

android - 在 Android 中比较日期(时间)的问题

java - 比较两个不同数组列表中的字符串(JAVA)

php - 使用 array_diff(),如何从 array2 而不是 array1 中获取差异?

java - 处理来自服务器端的条件 HTTP GET 请求的好方法是什么?也就是说,包含 "If-Modified-Since" header 的 GET 请求?

java - 如何使用 Spring Kafka 实现有状态的消息监听器?

java - 如何从枚举创建下拉菜单?

java - 如何解析可能具有两个分隔符之一的 CSV 文件?

java - InvalidArgumentException:无效参数和 InvalidSelectorException:ChromeDriver 和 Chrome 使用 Selenium 和 Java 时出现无效选择器错误

java - 基于compareTo调用方法?