Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 仅当所有原始列表中都存在字符串时,组合字符串数组列表并传递到新数组列表_String_Loops_Android Studio_Arraylist - Fatal编程技术网

String 仅当所有原始列表中都存在字符串时,组合字符串数组列表并传递到新数组列表

String 仅当所有原始列表中都存在字符串时,组合字符串数组列表并传递到新数组列表,string,loops,android-studio,arraylist,String,Loops,Android Studio,Arraylist,我有四个ArrayList,希望将它们合并。新的ArrayList应仅包含存在于所有其他数组列表中但仅包含一次的字符串。到目前为止,我有以下代码: //Combine array lists and only keep duplicates private ArrayList<String> getResultList(){ final ArrayList<String> filtered_list = new ArrayList<>();

我有四个ArrayList,希望将它们合并。新的ArrayList应仅包含存在于所有其他数组列表中但仅包含一次的字符串。到目前为止,我有以下代码:

//Combine array lists and only keep duplicates
private ArrayList<String> getResultList(){
    final ArrayList<String> filtered_list = new ArrayList<>();

    Set<String> set = new HashSet<>(filtered_list);

    filtered_list.addAll(getResultList1());
    filtered_list.addAll(getResultList2());
    filtered_list.addAll(getResultList3());
    filtered_list.addAll(getResultList4());

    ArrayList<String> duplicates = new ArrayList<String>();
    for (String s : filtered_list) {
        if (!set.add(s)) {
            duplicates.add(s);
        }
    }

    return duplicates;
}
//组合数组列表并仅保留重复项
私有ArrayList getResultList(){
最终ArrayList filtered_list=新ArrayList();
Set Set=新哈希集(过滤的\u列表);
过滤的_list.addAll(getResultList1());
过滤的_list.addAll(getResultList2());
过滤的_list.addAll(getResultList3());
过滤的_list.addAll(getResultList4());
ArrayList duplicates=新的ArrayList();
用于(字符串s:已筛选的\u列表){
如果(!set.add){
副本。添加;
}
}
返回副本;
}

例如,如果我在所有四个数组中只有一个相同的字符串,那么我当前得到的结果是列表中有三个相同的字符串。我是否需要创建一个包含HashSet的循环?我还没有看到任何这样的例子。任何帮助都将不胜感激。多谢各位

我用以下代码解决了这个问题:

    //Combine array lists and only keep duplicates
    private ArrayList<String> getResultList(){
    final ArrayList<String> filtered_list1 = new ArrayList<>();
    final ArrayList<String> filtered_list2 = new ArrayList<>();
    final ArrayList<String> filtered_list = new ArrayList<>();
    Set<String> set1 = new HashSet<>(filtered_list1);
    Set<String> set2 = new HashSet<>(filtered_list2);
    Set<String> set = new HashSet<>(filtered_list);

    filtered_list1.addAll(getResultList1());
    filtered_list1.addAll(getResultList2());

    filtered_list2.addAll(getResultList3());
    filtered_list2.addAll(getResultList4());

    ArrayList<String> duplicates1 = new ArrayList<String>();
    for (String s : filtered_list1) {
        if (!set1.add(s)) {
            duplicates1.add(s);
        }
    }

    ArrayList<String> duplicates2 = new ArrayList<String>();
    for (String s : filtered_list2) {
        if (!set2.add(s)) {
            duplicates2.add(s);
        }
    }

    filtered_list.addAll(duplicates1);
    filtered_list.addAll(duplicates2);

    ArrayList<String> duplicates = new ArrayList<String>();
    for (String s : filtered_list) {
        if (!set.add(s)) {
            duplicates.add(s);
        }
    }

    return duplicates;
}
//组合数组列表并仅保留重复项
私有ArrayList getResultList(){
最终ArrayList filtered_list1=新ArrayList();
最终ArrayList filtered_list2=新ArrayList();
最终ArrayList filtered_list=新ArrayList();
Set set1=新哈希集(过滤的\u列表1);
Set set2=新哈希集(过滤的\u列表2);
Set Set=新哈希集(过滤的\u列表);
过滤的_list1.addAll(getResultList1());
过滤的_list1.addAll(getResultList2());
过滤的_list2.addAll(getResultList3());
过滤的_list2.addAll(getResultList4());
ArrayList duplicates1=新的ArrayList();
for(字符串s:filtered_list1){
如果(!set1.add){
副本1.添加(s);
}
}
ArrayList duplicates2=新的ArrayList();
for(字符串s:filtered_list2){
如果(!set2.add){
副本2.添加(s);
}
}
已筛选的_list.addAll(重复项1);
过滤的_列表。添加全部(重复2);
ArrayList duplicates=新的ArrayList();
用于(字符串s:已筛选的\u列表){
如果(!set.add){
副本。添加;
}
}
返回副本;
}
可能有一种更简单的方法,但我还没有找到