比较两个arrayList获得公共值,它应该不影响原始值

时间:2018-06-30 06:41:11

标签: java

public void commonId(ArrayList<ArrayList<String>> stylistIdList) {
    if (stylistIdList.size() > 1) {
        array1=stylistIdList.get(0);
        array2=stylistIdList.get(1);
        booleanStylistid=array1.retainAll(array2);
    } else {
        array1=stylistIdList.get(0);
    }
}

我在这里ArrayList<ArrayList<String>> stylistIdList包含两个arraylist,我想从两个列表中获取公共值。它返回公共值,但是在获取公共值后,ArrayList<ArrayList<String>> stylistIdList的值将更改为常见的值。获取常见值后,我希望在ArrayList<ArrayList<String>> stylistIdList中具有相同的值。

示例

ArrayList<ArrayList<String>> stylistIdLis = 0(0["abcdefgh"], ["abc"]), 1(0["abcdefgh"]);

输出stylistIdList=("abcdefgh");

在输出后,ArrayList<ArrayList<String>> stylistIdLis的值更改为ArrayList<ArrayList<String>> stylistIdLis = 0("abcdefgh"), 1("abcdefgh"); 但是我想要这样

ArrayList<ArrayList<String>> stylistIdLis = 0(0["abcdefgh"],["abc"]), 1(0["abcdefgh"]);

1 个答案:

答案 0 :(得分:3)

retainAll修改被调用的列表。如果要获取公共ID而不修改原始列表,则需要返回一个新列表。

public ArrayList<String> commonIds(ArrayList<ArrayList<String>> lists) {
    List<String> common = new ArrayList<>(lists.get(0));
    if (lists.size() > 1) common.retainAll(lists.get(1));

    return common;
}