【问题标题】:Java Comparing Fields by Iteration of (N) Number of ObjectsJava通过(N)个对象的迭代来比较字段
【发布时间】:2016-03-03 10:54:39
【问题描述】:

你能帮我解决这个问题吗?

我正在尝试比较 (n) 个数字对象列表中的字段。

为了更清楚,这里是一个例子。

   ArrayList<TestObjectType> listOfObjects = new ArrayList<TestObjectType>();
    TestObjectType itemA = new TestObjectType();
    itemA.setID(1);
    TestObjectType itemB = new TestObjectType();
    itemA.setID(2);
    TestObjectType itemC = new TestObjectType();
    itemA.setID(3);

    //do compare here
    if (2 == listOfObjects.size())
    {   TestObjectType itemA = listOfObjects.get(0);
        TestObjectType itemB = listOfObjects.get(1);
        if (itemA.getID != itemB.getID)
        {   //do something here
            ;
        }
    } 
    else if (3 == listOfObjects.size())
    {   TestObjectType itemA = listOfObjects.get(0);
        TestObjectType itemB = listOfObjects.get(1);
        TestObjectType itemC = listOfObjects.get(2);
        if ((itemA.getID != itemB.getID) || 
            (itemA.getID != itemC.getID) || 
            (itemB.getID != itemC.getID))
        {   //do something here
            ;
        }
    }
    // so on and so forth until all (n) number of objects has been compared

问题是,我怎样才能满足迭代列表中任意 (n) 个对象的需求?

【问题讨论】:

  • 为什么不实现 equals() 和 hashCode() 并使用 Set ?

标签: java arraylist iteration


【解决方案1】:

看起来您想要比较 List 中的所有元素对,如果至少一对元素具有不同的 ID,则执行某些操作:

boolean found = false;
for (int i = 0; i < listOfObjects.size() && !found; i++) {
    for (int j = i+1; j < listOfObjects.size() && !found; j++) {
        if (listOfObjects.get(i).getID != listOfObjects.get(j).getID)
            found = true;
    }
}
if (found) {
    // do something
}

【讨论】:

  • 您的解决方案可能会比较相同的对象。我说的对吗?
  • @VincentMercadoSy 不,j 总是高于 i
猜你喜欢
  • 2014-09-23
  • 2015-04-12
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
相关资源
最近更新 更多