2017-11-03 18 views
0

두 arraylists의 첫 번째 요소가 same.i 인 경우에도 결과가 true가 아닙니다. 결과가 일치하면 내 체크 박스를 확인하고 싶습니다. 내 recyclerview에서 구현했습니다. arraylists의 요소를 비교하고 싶지만 두 가지 모두 크기가 다릅니다. 저는 솔루션을 온라인에서 찾은 다음이를 구현했습니다.크기가 다른 두 arraylist의 요소를 android에서 비교하십시오.

List<String> list1 = new ArrayList<>(); 
        for (int i = 0; i < data.size(); i++) { 
         list1.add(data.get(i).getChannel_names()); 
        } 
        List<String> list2 = new ArrayList<>(); 
        for (int i = 0; i < listNewsChannelsSelected.size(); i++) { 
         list2.add(listNewsChannelsSelected.get(i).getSelectedChannelsFromApi()); 
        } 

     private boolean equalLists(List<String> one, List<String> two) { 
       if (one == null && two == null) { 
        return false; 
       } 

       if (one != null && two == null) { 
        return false; 
       } 


       one = new ArrayList<>(one); 
       two = new ArrayList<>(two); 

       Collections.sort(one); 
       Collections.sort(two); 
       return one.equals(two); 
      } 
    if (equalLists(list1,list2)) { 
       holder.mCheckBox.setChecked(true); 
      } else { 
       holder.mCheckBox.setChecked(false); 
      } 
+0

은 Comparer와 Comparator를 모두 구현했습니다. 그렇다면 세부 정보 게시 pls. 그렇지 않다면 구현할 필요가 없습니다. –

+0

@NirajSanghani가 없습니다. 하지만 equlaLists 메소드가 이미 비교할 때 비교자를 비교하는 이유는 무엇입니까? –

+0

나는 그때 질문에 대한 질문이 분명하지 않다. –

답변

0

방금 ​​테스트 한 결과 코드에 이상이 없음을 알았습니다. (Java에서 테스트하도록 수정 된 비트). 결과가 TRUE이므로 코드가 정확합니다.

API 데이터를 확인하십시오. 그것은 틀린 것 같습니다 (당신이 기대하는 것이 아닙니다). 로그를 생성하려고 시도하십시오 (루프의 api 데이터 인쇄).

public class Main { 

public static void main(String args[]){ 

    List<String> list1 = new ArrayList<>(); 
    for (int i = 0; i < 5; i++) { 
     list1.add(""+i); 
    } 
    List<String> list2 = new ArrayList<>(); 
    for (int i = 0; i < 5; i++) { 
     list2.add(""+i); 
    } 

    if (equalLists(list1,list2)) { 
     System.out.println("TRUE"); 
    } else { 
     System.out.println("FALSE"); 
    } 

} 



private static boolean equalLists(List<String> one, List<String> two) { 
    if (one == null && two == null) { 
     return false; 
    } 

    if (one != null && two == null) { 
     return false; 
    } 


    one = new ArrayList<>(one); 
    two = new ArrayList<>(two); 

    Collections.sort(one); 
    Collections.sort(two); 
    return one.equals(two); 
} 
관련 문제