在android中比较两个不同大小和顺序的arraylist元素

时间:2017-11-03 05:24:21

标签: android arraylist compare

即使两个arraylists的第一个元素相同,我也没有得到结果。我想在结果匹配时检查我的复选框。我已经在我的recyclerview中实现了它我想要比较arraylists的元素,但两者都是大小不一。我在网上找到了一个解决方案,并实现如下:。

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);
            }

1 个答案:

答案 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);
}