java - 比较两个arrayList得到共同的值,它应该不影响原始值
问题描述
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"]);
解决方案
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;
}
推荐阅读
- ethereum - 使用 Web3js 发送 erc20 令牌
- ruby-on-rails - Stripe Subscription - 服务器以状态 400 响应
- vba - 如何在visual basic中随机打乱图片
- encryption - 只有一个人拥有公钥/私钥时的数字签名
- javascript - 为什么 JavaScript 函数不起作用?
- octave - 非线性拟合 Octave
- java - 为什么 ActionListener 不工作?
- python - Scrapy spider 无法正确迭代并存在 If 语句问题
- oracle - 在 Oracle Forms 中向表中插入值时如何删除 FRM-40401
- r - 如何在 R 中正确读取 KML 文件,或将集中变量分离成列