2012-01-27 2 views
1

지금 자바를 배우고 있습니다. 객체 목록을 특정 객체와 비교하는 비교자를 작성해야하는지 여부를 알고 싶습니다. 그리고 나는 또한 특정 라인이 목록을 비교되지 않는 이유를 알고 싶어개체 목록을 해당 유형의 개별 개체와 비교하는 방법은 무엇입니까?

myList.contains (OBJ1) 기본적으로

import java.io.File; 
import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 

public class createItem { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     String [] itemid = null; 

     try{ 
      File itemFile = new File("C:\\"+"Sano"+".xml"); 
      itemFile.createNewFile(); 

      List<ObjectIdName> myList = new ArrayList<ObjectIdName>(); 
      ObjectIdName obj1 = new ObjectIdName("ABC","ABC"); 

      myList.add(new ObjectIdName("DEF","DEF")); 
      myList.add(new ObjectIdName("ABC","ABC")); 
      if(myList.contains(obj1)){ 
       System.out.println("Has"); 

      } 
      System.out.println("MyList:" + myList.size()); 

     }   
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 


} 
class ObjectIdName implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    private String id; 

    private String name ; 

    public ObjectIdName (String id, String name) { 
     this.id= id; 
     this.name =name; 

    } 
} 

답변

5

, equals()compares the references : 클래스 Object에 대한

equals 방법 객체에 대해 가장 차별화 가능한 동등성 관계를 구현합니다. 즉 null이 아닌 참조 값 xy의 경우 xy이 동일한 객체 (x == y의 값이 true)를 참조하는 경우에만이 메서드는 true을 반환합니다.

obj1 이후

하고 목록에 삽입 두 번째 목적은 두 가지 목적, myList.contains(obj1) 반환 false입니다.

필드를 비교하려면 ObjectIdNameimplements its own equals() method이어야합니다.

equals()을 구현하는 경우 hashCode()을 구현하는 것이 좋습니다 (코드에서 사용하지 않더라도).

관련 문제