猿问

获取与 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])

我如何比较列表,我得到一个具有以下值的新列表:


[“一二三”] ????


基本上:我想检查整数,看看它是否存在于列表中一个项目的第二个值中,如果是,则将第一个项目添加到新列表中。


扬帆大鱼
浏览 192回答 2
2回答

波斯汪

与其创建一个 ArrayList>,不如使用一个 HashMap有数据作为c = [1,2,3];Map<Int, String> data = new HashMap();data.put(1, "One");data.put(2, "Two");data.put(3, "Three");ArrayList<String> output = new ArrayList()for(int i=0 i<c.length; i++) {&nbsp; &nbsp; output.add(data.get(c[i]));}现在输出将有数据 ["One", "Two", "Three"]

眼眸繁星

好的,如果在任何情况下您的代码如下所示: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()&nbsp; &nbsp; &nbsp; &nbsp; .filter(l -> c.contains(Integer.valueOf(l.get(1))))&nbsp; &nbsp; &nbsp; &nbsp; .map(l -> l.get(0))&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList());这会给你:[One, Two, Three]更好的解决方案为了做好工作,我会创建一个类 Contact,其中包含 id 和名称,例如:class Contact{&nbsp; &nbsp;private Integer id;&nbsp; &nbsp;private String name;&nbsp; &nbsp;//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()&nbsp; &nbsp; &nbsp; &nbsp; .filter(l -> c.contains(l.getId()))&nbsp; &nbsp; &nbsp; &nbsp; .map(Contact::getName)&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList());它可以更具可读性,对工作更有帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答