마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

자바의 컬렉션 검색 방법

0 추천
아래와 같은 데이터를 가진 컬렉션이 있을때

int userNo;

String userName;

String userPhone;

 

다음과 같이 두개 혹은 세개의 검색 조건으로 userPhone를 검색하는 방법이 있을까요?

userNod ==1

userName == "홍길동"
SKT고객 님이 2016년 8월 20일 질문
질문만 보면 아래 방법을 원하시는 것 같은데 (제가 잘못 이해했기를 바라며)

for (UserPhone item : list) {
   if (item.userId == 1 && "홍길동".equals(item.userName)) {
        //To something whatever you want
        //break
   }
}
equals 메소드를 override하실 때는 다른 곳에서 object의 equals를 쓰는 일이 없는지 잘 확인하시길 바랍니다.
그런 문제가 생길 수 도 있겠네요.
의견 감사합니다.

1개의 답변

0 추천
컬렉션이 아니라 위에 말씀하신 3가지를 가진 구조체가 있고

이 구조체 인스턴스를 리스트로 가지고 있을 경우에 검색하시는 법을 말씀하시는거같은데

 

저 같은 경우는 이 컬렉션이 ArrayList라고 하였을때 ArrayList의 contains 함수가 있습니다.

만약 ArrayList<String> 인 경우 contains함수를 사용하여 값을 찾을 수가 있지요.

 

그런데 질문자님이 원하시는 방법은 2개 이상의 조건인 경우인데 이것도 contains함수로 가능합니다.

Object를 상속받는 모든 클래스는 equals 라는 함수를 가지고 있습니다. 리턴값이 boolean 이구요.

말씀하신 3가지 데이터를 갖는 구조체에서 equals 함수를 오버라이드 하여 그 안에 원하시는 조건에 맞기 true 또는 false 를 리턴하도록 정의하시고 contains 함수를 사용하시면 원하시는 결과를 얻으실 수 있습니다.
Development Guy (70,570 포인트) 님이 2016년 8월 30일 답변
아 감사합니다.
조금더 자바스러운 코드를 만드는 단서가 되네요.
말씀하신데로 하고

아래처럼 처리하니 정확히 잘됩니다.
System.out.println(alUser.get(alUser.indexOf(se)).userPhone);
...