2017-11-03 12 views
0

両方のarraylistsの最初の要素が同じでも結果が得られません。結果が一致するとチェックボックスをチェックします。私はrecyclerviewで実装しましたarraylistsの要素を比較したいと思いますが、どちらもサイズが異なります。私は解決策をオンラインで見つけ出し、次のように実装しました。異なるサイズの2人のarraylistの要素をアンドロイドで比較する

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の両方を実装している場合は、詳細を投稿してください。あなたがそれらを実装する必要がない場合 –

+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); 
} 
関連する問題