关于java中的列表

时间:2014-02-05 18:18:08

标签: java eclipse list

我正在研究Java中的列表。我无法将两个列表相互比较。我想要做的是返回true如果两个列表具有相同的名称,但它会一直返回false。在我的课程中,示例DVD1DVD3都应该具有相同的名称。 DVDCDIBook。因此DVD1CD1,其名称为S23DVD3CD2,其名称为S23。它应该返回true。我想我必须以某种方式合并equalname(我用来比较CD类中的两张CD的方法)。我该怎么办?

import tester.Tester;

interface IBook{

    //return name 

    public boolean samename(IBook that);   
}
 class CD{
    String name;
    String color;
    CD(String name, String color){
      this.name=name;
      this.color=name;

    }  
       public String returnname(){
        return this.name;
    }

    public boolean equalname (CD that){
        return this.name == that.name;

    }
}

class mtlob implements IBook{

    public String returnname(){
        return "";
    }
    public boolean samename(IBook that){
        return false;
    }
}

class DVD implements IBook{
   CD first;
   IBook rest;

   DVD(CD first, IBook rest){
        this.first=first;
       this.rest=rest;

   }

   public boolean samename(IBook that){
       return this.first.equals(that); //this.rest.samename(that);

   }


}



class ExamplesX{

    CD CD1 = new CD ("S23", "blue");
    CD CD2 = new CD ("S23", "red");
    CD CD3 = new CD ("cs2, ", "black");
    CD CD4 = new CD ("HFF", "black");
    mtlob empty = new mtlob ();
    IBook DVD1 = new DVD (this.CD1, empty);
    IBook DVD2 = new DVD (this.CD3, this.DVD1);
    IBook DVD3 = new DVD (this.CD2, this.DVD1);

     boolean test(Tester t){
        return
        t.checkExpect(this.CD1.equalname(CD2), true)&&
        t.checkExpect(this.DVD1.samename(DVD3), true);


        } }

4 个答案:

答案 0 :(得分:3)

使用方法等于而不是使用==

string1.equals(string2)

答案 1 :(得分:1)

比较字符串时,需要使用.equals方法。 ==只会确定两个变量是否指向完全相同的字符串(smae指针),而不是两个具有相同文本的字符串,例如:

string a="hello";
string b=a;
string c=getUserInput();//User inputs the string "hello"
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));

将输出

true
false
true

答案 2 :(得分:1)

只需使用==表示原始类型。

答案 3 :(得分:1)

使用这样的equals方法:

if((CD1.name).equals(CD2.name)){
    //........true
}