2017-09-20 1 views
0

여기에서 contains를 사용하여 이름을 검색하는 방법은 무엇입니까? .contains를 사용하여 arrayList의 입력 결과와 일치 시키려고합니다.Java의 사용자 정의 유형 ArrayList에 포함하는 방법?

이 프로그램은 사용자 지정 형식 데이터 형식을 사용하기 위해 클래스 이름 DataType을 만듭니다.

arrayList.add(new DataType(name,Integer.parseInt(age))); 


    System.out.println("Search Nme : "); 
    String name=new Scanner(System.in).nextLine(); 
    if (arrayList.contains(new DataType(name))) { 
     System.out.println("Find"); 
    } 

또는

System.out.println("Search Nme : "); 
    String name=new Scanner(System.in).nextLine(); 
    System.out.println("Search age: "); 
    String age=new Scanner(System.in).nextLine(); 

    if (arrayList.contains(new DataType(name,Integer.parseInt(age)))) { 
     System.out.println("Find"); 
    } 

하는 주문형 데이터 유형 클래스

static class DataType { 

String Name; 
int Age; 

public DataType(String name,int age){ 
    Name=name; 
    Age=age; 
} 


public DataType(String name){ 
    Name=name; 
} 

}

+0

당신이 사용하는 어떤 언어 지정된를 havent, 그 –

+0

에 대한 사용 태그는 자바 프로그램 –

답변

1

Java에서 equals 메소드를 대체하는 것이 JavaProgrammer12가 말한 것처럼 좋은 지적입니다.

다음은이 경우에 대한 간단한 예입니다.

static class DataType { 

    String Name; 
    int Age; 

    public DataType(String name, int age) { 
     Name = name; 
     Age = age; 
    } 

    public DataType(String name) { 
     Name = name; 
    } 

    @Override 
    public boolean equals(Object fromObj) { 
     DataType dt = (DataType)fromObj; 

     if(Name == null) return false; 
     if(dt.Age == Age) return true; 
     if(dt.Name.equals(Name)) return true; 

     return false; 
    } 
} 

그리고 메인에있는 클래스로 테스트 할 수 있습니다. 예를 들어 ,

static void containsName1(List<DataType> dtArrayLst, Scanner sc) { 
    System.out.print("Search Nme1 : "); 

    String name = sc.nextLine(); 
    if (dtArrayLst.contains(new DataType(name))) { 
     System.out.println("Find"); 
    } 

    System.out.println(); 
} 

static void containsName2(List<DataType> dtArrayLst, Scanner sc) { 
    System.out.print("Search Nme2 : "); 

    String name = sc.nextLine(); 

    System.out.print("Search age: "); 
    String age = sc.nextLine(); 

    if (dtArrayLst.contains(new DataType(name, Integer.parseInt(age)))) { 
     System.out.println("Find"); 
    } 
    System.out.println(); 
} 

public static void main(String[] args) { 
    String name = "tommybee"; 
    String age = "100"; 

    List<DataType> dtArrayLst = new ArrayList<DataType>(); 

    dtArrayLst.add(new DataType(name, Integer.parseInt(age))); 

    Scanner sc = new Scanner(System.in); 

    containsName1(dtArrayLst, sc); 
    containsName2(dtArrayLst, sc); 

    sc.close(); 
} 

당신이 최우선이 equals 메소드에 대해 배우고 싶은 경우에 좋은 참고 사이트가있다

.

https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/

+0

이 코드는 정말 ....... –

+0

덕분에 작동 좋은 하루 되세요입니다! – tommybee

1

당신은 대체하여이 작업을 수행 할 수 사용자 정의 클래스의 방법과 동일합니다. 좋은 연습은 equals 메서드를 재정의 할 때 hashcode 메서드를 재정의합니다.

관련 문제