java - 如何在java中基于一个相同的索引值同时从两个Arraylists中删除元素
问题描述
我有两个数组列表,其中包含两组字符串。例如列表 domainList 包含 {'gmail','yahoo','yahoo','aol'},列表 flagList 包含 {'Y,'N','N', 'Y'} 。所以现在因为 yahoo 在列表中出现了两次,我必须从这个 domainList 中删除一个 'yahoo' 以及从 flagList 中删除它的相应标志。结果列表将是 {'gmail','yahoo','aol' } 和 {'Y','N','Y'}。我不知道该怎么做。
谁能帮我?
解决方案
正如人们在评论中指出的那样,您可以探索创建一个类来保存相关信息,然后使用此类实例的单个列表。
但是,如果您真的想从一个列表中删除重复的元素同时保持另一个列表同步,您可以使用 aSet
来跟踪已经看到的内容,并使用 aIterator
遍历列表并删除集合中已经存在的元素:
public static void main(String[] args)
{
List<String> domainList = new ArrayList<>(Arrays.asList("gmail","yahoo","yahoo","aol"));
List<String> flagList = new ArrayList<>(Arrays.asList("Y","N","N","N"));
Set<String> seen = new HashSet<String>();
Iterator<String> di = domainList.iterator();
Iterator<String> fi = flagList.iterator();
while(di.hasNext() && fi.hasNext())
{
fi.next(); // don't care about result
String domain = di.next();
if(!seen.add(domain))
{
di.remove();
fi.remove();
}
}
System.out.println(domainList);
System.out.println(flagList);
}
输出:
[gmail, yahoo, aol]
[Y, N, N]
推荐阅读
- c++ - 无法构建 MATIO 库
- r - 更改标签字体大小,但也更改了使用 ggtext 时的 x axia 标签顺序
- java - jpackage 在 Windows 10 和 JDK 16 上不起作用
- python - 我想根据标记分离数据框然后下载
- css - 你能@import默认的css变量吗?(特别是,我将使用@use)
- apache-spark - 获取 Azure Databricks 沿袭组件
- java - 春季批次:加工中的条件
- vue.js - 使用 Nuxt 过滤来自 API 的数据
- firebase - 如何将 Futurebuilder 更改为 Streambuilder?
- angular - 与方法的角度绑定未按预期工作