2013-03-04 68 views
-1

我需要搜索對象集合並找到哪個對象包含與我讀入的字符串匹配的'name'變量。下面是每個Student對象的樣子:使用.equals()來比較兩個對象的變量

public Student(String name, String class) 
{ 
    this.name = name; 
    this.class = class; 
} 

我也在僱員類中寫了這個.equals()方法來做我的對象比較。

public boolean equals(Student student) 
{ 
    return this.name.equals(student.name); 
} 

在我的主類我轉變學生的姓名爲Student對象,並使用.equals()方法來比較是其他每個學生。

public static void loadStudentProjects(ArrayList students) 
Student currentStudent; 
String studentName = "name"; 

    while (count < students.size()) 
    { 
    currentStudent = Students.create(studentName); 
//The Student object is initialized as (name, null) 

System.out.println(currentStudent.equals(students.get(count))); 
count++; 

即使我知道第一個比較應該顯示匹配的名稱,但每次比較都會返回false。我被告知我需要將字符串名稱與對象進行比較,並使用.equals()方法,但我找不到使其工作的方法。

+3

請確保您的代碼編譯。你不能使用「class」作爲參數名稱 – kritzikratzi 2013-03-04 23:44:32

+0

請粘貼完整的函數'loadStudentProjects'。另外爲什麼你在Employee類中的'Student'有'.equals'?錯字? – Ankit 2013-03-04 23:45:06

回答

10

你是重載等於方法,而不是重寫它。它應該看起來更像

public boolean equals(Object o) { 
    ... 
} 

你的情況,以檢查是否任意對象o等於this學生,要

  1. 檢查o確實是一個Student實例。
  2. 假設爲真,檢查othis是否有名稱。

所以,你可以嘗試沿着

(o instanceof Student) && name.equals(((Student) o).name) 
+7

這是_always_使用'@ Override'註釋的一個重要原因。 – jtahlborn 2013-03-04 23:47:27

+0

也許提供一些信息爲了OP可以使用'equals'重載的方法,因爲看起來很困惑:*這個問題明確地說使用.equals(),但我不能確定這樣做的方法*。 – 2013-03-05 00:01:04

+0

@LuiggiMendoza好的,我添加了更多信息。 – arshajii 2013-03-05 00:33:14

0

代替equals線的東西,我建議你使用compareTo(或compareToIgnoreCase):

public int compareTo(Student s) { 
    return this.name.compareTo(s.name); 
} 

compareTo返回0如果字符串在任何其他情況下與0不同。

來比較Student對象,你可以使用這樣的事情:

public void aMethod(ArrayList students) { 
    Student aStudent; 
    int count; 
    count = 0; 

    aStudent = newStudent("name", "class") // Construct the Student object with the appropriate parameters 
    for (Student s : students) { 
     if s.compareTo(aStudent) == 0 { 
      // Do something 
     } 
    } 
} 

希望這有助於你

+0

具體說這個問題用的。等於()但我無法確定一種方式來這樣做。 – Dexter 2013-03-05 00:00:03

+0

@DexterPeters這就是爲什麼第一行暗示它是一個建議 – Barranka 2013-03-05 00:06:21