2012-02-16 9 views
0

안녕하세요, 자바의 다른 데이터베이스를 쿼리하여 얻은 배열 목록에 결과를 저장하고 있습니다. 이 배열 목록을 비교하여 공통 행을 가져와야합니다.arraylist의 비교

 List name = new ArrayList(); 
     name.add(Spreadsheets.getString("Name")); 

    List namedb = new ArrayList(); 
    namedb .add(rs.getString("eName")) 

(C++) 우리는 strcmp를 사용하여 비교합니다. 하지만 자바에서는이 arraylist를 어떻게 비교해야하며 공통 행을 반환해야합니다. 또는 어떻게 arraylist 검색 이진 검색 알고리즘을 적용합니까?

+0

아래에 표시된 namesDB.retainAll (names) 메소드는 Triztian에서 제안하지만 배열의 크기에 따라 효율성이 떨어질 수 있습니다. 이름이 고유하면 ArrayList 대신 Set 을 사용합니다. – brettw

답변

1

목록의 retainAll 방법을 사용하십시오.

List<String> names = new ArrayList<String>(); 
List<String> namesDB = new ArrayList<String>(); 

// Get some names ?? 
names.add(Spreadsheets.getString("Name")); 

boolean hasCommonNames = namesDB.retainAll(names); 

// The namesDB will only contain the common names. 
if(hasCommonNames) { 
    // Do something with the common names 
} 
0

당신은, 결과의 첫 세트를 저장할 수는 HashMap을 사용하고, 그 값이 존재하는 경우, 다른 목록 C로 그것을 밀어의 HashMap에있는 경우 다음 반복 검사 중, 두 번째 목록을 반복 할 수 반복의 끝에서 목록 C는 공통 요소를 갖습니다.

0
ArrayList<Integer> a3 = new ArrayList<Integer>();    
for (String a : a1) 
    a3.add(a2.contains(a) ? 1 : 0); 

이제 a3의 내용을 확인하십시오. 모두가 1이면 두리스트가 같습니다 ...

+0

예제에서 입출력을 제공하면 문자열 결과가 – user1063145

+0

필요합니다 ... –