java - 获取与 Arraylist 匹配的 List 的 Arraylist 中的数据
问题描述
我有以下 ArrayList:
public static List c = new ArrayList();
c = [1,2,3];
我在 ArrayList 中有以下列表:
public static ArrayList<List<String>> Contact = new ArrayList<List<String>>();
Contact = (["One",1], ["Two", 2], ["Three",3], ["Four", 4])
如何比较列表中的列表,以获得具有以下值的新列表:
[“一二三”] ????
基本上:我想检查整数,看看它是否存在于列表中某个项目的第二个值中,如果存在,则将第一个项目添加到新列表中。
解决方案
好的,如果在任何情况下您的代码如下所示:
List<Integer> c = new ArrayList(Arrays.asList(1, 2, 3));
ArrayList<List<String>> contact = new ArrayList<List<String>>();
contact.add(Arrays.asList("One", "1"));
contact.add(Arrays.asList("Two", "2"));
contact.add(Arrays.asList("Three", "3"));
contact.add(Arrays.asList("Four", "4"));
您可以像这样使用流:
List<String> result = contact.stream()
.filter(l -> c.contains(Integer.valueOf(l.get(1))))
.map(l -> l.get(0))
.collect(Collectors.toList());
这会给你:
[One, Two, Three]
更好的解决方案
为了做好工作,我会创建一个包含 id 和名称的类 Contact ,例如:
class Contact{
private Integer id;
private String name;
//constructor getters and setters
}
然后像这样填写您的列表:
ArrayList<Contact> contact = new ArrayList<>();
contact.add(new Contact(1, "One"));
contact.add(new Contact(2, "Two"));
contact.add(new Contact(3, "Three"));
contact.add(new Contact(4, "Four"));
因此,当您要搜索时,可以使用:
List<String> result = contacts.stream()
.filter(l -> c.contains(l.getId()))
.map(Contact::getName)
.collect(Collectors.toList());
它可以更具可读性,对工作更有帮助。
推荐阅读
- office-js - Excel 2013 和 2016 是否支持 DialogApi1.1(清单要求)
- javascript - 循环创建数组+循环增量?
- python - Sklearn MLPRegressor 中的 RandomGridSearchCV 出错
- scala - 使用 better.files 在与另一个目录相同的目录中创建新文件的推荐习惯用法是什么?
- c# - 嵌套 For 循环变量增量
- sql - 如何使用数据浏览器从标签中获取所有问题?
- java - RecyclerView 没有更新 OnPostExecute() 上的项目
- c++ - 重新定义类成员数据类型
- regex - 美丽的汤发现href不起作用
- vba - 使用VBA从Excel中提取URL而不是在哈希后提取