1

我有一个循环,它创建对象。第一个对象“myObject”从另一个类获取字符串(该类将字符串存储在数组中。我可以通过哈希图访问字符串)。对象 myOtherObject 存储 myOject。我想在每个循环连续之后测试对象属性是否已经存在于对象中。如果是这种情况,我不想创建 MyClass 类的新对象并继续循环。

MyClass myObject = new MyClass(mysecObject.get("Value"));
MyOtherClass myOtherObject = new MyOtherClass(myObject);

因为有很多自己的方法和对象,所以很难向您展示循环的代码。

while(true)
{
   someClass l = someOtherObject.myMethod();
   if (l == null) 
   {
     break;
   }

    MyClass myObject = new MyClass(l.get("Value"));
    MyOtherClass myOtherObject = new MyOtherClass(myObject);


    ...adding myOtherObject to an HashMap

  }

编辑:我犯了一些逻辑错误,我很抱歉在我真正考虑之前提出了一个问题。正如评论中已经提到的那样,我必须创建对象才能检查实例是否相等(当然它是这样工作的)。我解决了我的问题并想与您分享。我创建了一个 HashSet,它自动检查重复条目并将在循环中创建的对象放入 HashSet。这有多简单?谢谢大家的帮助和理解。祝你今天过得愉快!

4

1 回答 1

1

如果要检查两个实例是否相等,则需要重写 equals(Object o) 方法。例如:

public MyClass {
    // some properties and methods
    public boolean equals(Object o) {
        boolean condition = some_condition_to_check_they_are_equal 
        return condition;
    }
}

您可以调用它来检查对象是否相等:

MyClass myObject = new MyClass(mysecObject.get("Value"));
MyOtherClass myOtherObject = new MyOtherClass(myObject); 
if(myObject.equals(myOtherObject )) {
    // They are equals
}
于 2014-01-27T09:47:41.563 回答