2013-03-04 4 views
-1

개체 컬렉션을 검색하고 내가 읽은 String과 일치하는 '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

코드를 컴파일 확인하십시오 수 있습니다. 당신은 매개 변수 이름으로 "클래스"를 사용할 수 없습니다 – kritzikratzi

+0

완벽한 함수'loadStudentProjects'를 붙여주세요. 또한 왜 'Employee'클래스의 'Student'에'.equals '가 있습니까? 오식? – Ankit

답변

10

오버플로하지 말고 오버플로하는 것은 같음 메서드입니다. 그것은 임의의 객체 othis 학생에게 동일한 경우 확인하기 위해, 귀하의 경우에는 더 같은

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

을 보일 것입니다, 당신은 o 참으로 Student 예입니다

  1. 확인하시기 바랍니다.
  2. 이 참이라면 othis에 이름이 있는지 확인하십시오.

그래서 당신은 당신이 compareTo (또는 compareToIgnoreCase)를 사용하는 것이 좋습니다

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

이것은'@ Override' 주석을 항상 사용하는 하나의 큰 이유입니다. – jtahlborn

+0

op가 혼란 스럽기 때문에 OP에 'equals' 오버로드 된 메소드를 사용할 수있는 정보를 제공했을 수도 있습니다 : * .equals()를 사용한다고 구체적으로 말했지만 그렇게 할 방법을 결정할 수는 없습니다 *. –

+0

@LuiggiMendoza 좋아, 나는 더 많은 정보를 추가했다. – arshajii

0

대신 equals의 라인을 따라 뭔가를 시도해 볼 수도 있습니다 : 문자열이 0 경우

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

compareTo 반환 다른 어떤 경우에는 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

구체적으로 말한 질문입니다.equals()하지만 그렇게 할 방법을 결정할 수는 없습니다. – Dexter

+0

@DexterPeters 그 이유는 첫 번째 줄은 제안임을 암시합니다. – Barranka