首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较整数集合

比较整数集合
EN

Stack Overflow用户
提问于 2013-12-13 13:14:28
回答 2查看 1.3K关注 0票数 0

对于Comparable<>的实现,我正在寻找一种方法来比较Collection<boolean[]>的两个实例。我已经在通过创建一个整数表示(101个boolean[] 5)来比较==,所以我将其缩小到比较两个Collection<Integer>

我该怎么做呢?

简单地比较每个整数不起作用,因为给定的collectionA = {1, 2}; collectionB = {2,1},下面的示例给出了cmp == 0,而集合当然是不同的。

代码语言:javascript
复制
int cmp = 0;
for(Integer a : collectionA)
  for(Integer b : collectionB)
    cmp += Integer.compare(a, b);

我还有别的选择吗?我并不关心它们是如何排序的,只是它们是以一种有条理的方式排序的。集合可能有不同的大小。

编辑:我真的是在找int compare(),而不是equals()。我的应用程序的实际结构的一个更具体的示例如下所示

代码语言:javascript
复制
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
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-13 13:20:42

按照字符串比较的方式对列表进行比较:首先比较第一个整数,如果它们相等,检查第二个整数,直到找到不同的整数或到达列表的末尾为止。

代码语言:javascript
复制
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();

请注意,只有当您的集合被订购时,这才有效。

票数 2
EN

Stack Overflow用户

发布于 2013-12-13 13:16:32

java集合类中内置的相等()方法已经为您完成了这一任务。

如果两个集合的大小相同,并且对于一个集合中的每个元素,另一个集合中有一个对应的元素,则返回true。

List比较检查顺序,但是如果您使用Set代替,那么它并不关心顺序。

列表

将指定的对象与此列表进行相等比较。返回true当且仅当指定的对象也是一个列表时,这两个列表具有相同的大小,并且两个列表中所有对应的元素对是相等的。(两个元素e1和e2等于if (e1==null?)( e2==null :e1.等于(E2))。换句话说,如果两个列表以相同的顺序包含相同的元素,则定义为相等。此定义确保equals方法在列表接口的不同实现中正常工作。

将指定的对象与此集进行相等比较。如果指定的对象也是一个集合,则返回true,两个集合的大小相同,并且指定集合的每个成员都包含在这个集合中(或者等效地,该集合的每个成员都包含在指定的集合中)。此定义确保equals方法在set接口的不同实现中正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20567442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档