比较ArrayLists和布尔值

时间:2016-04-13 09:31:24

标签: java arraylist boolean

为什么这不起作用? 我不确定除了Formula之外你还需要什么其他信息是由char和一个类型为term的int给出的。

// returns true if f is identical to this Formula 
// e.g. terms = {Term('C',2),Term('H',6)} and f = {Term('C',2),Term('H',6)} would return true 
// but  terms = {Term('C',2),Term('H',6)} and f = {Term('H',6),Term('C',2)} would return false

public boolean identical(Formula f)
{
   int fSize = f.getTerms().size();

   if(fSize!=terms.size())
   {
       return false;
   } 
   else 
   {
       for(int j = 0; j < fSize; j++)
       {
           Term tester = terms.get(j);
           Term fTester = f.getTerms().get(j);

           if(fTester == tester)
           {
               continue;
           } 
           else 
           {
               return false;
           }
       }
   }

   return true; 
}
  

N.B。 terms是ArrayList的名称

2 个答案:

答案 0 :(得分:1)

您需要比较两个不使用==的对象,而是使用equals方法,以便对象&#39;内容进行了比较。

由于Term是您的自定义类,因此您需要自行覆盖此方法:

class Term {
  char c;  //the two values inside your Term class
  int i;

  @Override
  public boolean equals(Object o){
    //checks omitted
    Term other = (Term)o;
    //now compare the contents:
    return i==other.i && c==other.c;
  }
}

然后你可以使用

比较它们
if(fTester.equals(tester)){
  continue;
} 

答案 1 :(得分:0)

用于比较Term的两个对象,您需要覆盖Term类中的方法equals()和hashCode()。您的代码将是:

public boolean identical(Formula f)
{
   int fSize = f.getTerms().size();
   if(fSize!=terms.size()){
       return false;
   } else {
       for(int j = 0; j < fSize; j++){
           Term tester = terms.get(j);
           Term fTester = f.getTerms().get(j);
           if(fTester.equals(tester)){
               continue;
           } 
           else {
               return false;
           }
       }
   }

   return true; 
}