gpt4 book ai didi

java - 在具有不同索引和大小的数组列表上添加不重复的元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:10 24 4
gpt4 key购买 nike

我有2个ArrayList

ArrayList users 由两列组成:[2, 1, 2, 2] 2 表示用户的 id,而 1 和 2 表示服务的 id

ArrayList 服务调用由 1 列组成的 tmp:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

我想将 arraylist users 的第二列与 arraylist services 的每个元素进行比较,如果它们不同,则将用户的 id 和服务的 id 放入由 2 列组成的另一个数组中

我想要的结果是:

[2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 1, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23]

我尝试过,但效果不佳

for(int i=0;i<users.size();i+=2)
{
for(int j=0;j<tmp.size();j++)
{
if(users.get(i+1).equals(tmp.get(j)))
{

}
else
{
tmp2.add(users.get(i));
tmp2.add(tmp.get(j));
}
}
}

输出错误:

[2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 1, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23]

输出应从[2,3 .......]开始

最佳答案

如果您想收集没有出现在 users 数组中的 id,那么在外循环中迭代 users 是错误的:您在查看 users 的第二个“记录”之前将元素添加到 tmp2 中。

你应该像这样交换它们:

for(int service : tmp) {
boolean found = false;
for(int i = 0; i < users.size(); i += 2) {
if(users.get(i+1) == service) found = true;
}

if(!found) {
for (int i...) {
tmp2.add(users.get(i));
tmp2.add(service);
}
}
}

当然,拥有“2 列”列表是不好的做法。考虑创建具有 2 个字段的 User 类。使用流将有助于创建更具可读性的代码。

关于java - 在具有不同索引和大小的数组列表上添加不重复的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com