我正在用Java开发Android项目。我有一个看起来像这样的对象数组

Agenda = [{id: 1, sessionName: Some name, sessionLocation: Some place},
         {id: 2, sessionName: Some name, sessionLocation: Some place},
         {id: 3, sessionName: Some name, sessionLocation: Some place}]


我还有一个动态的字符串数组,因此它可以有多个值...看起来像这样:

sessionID = {1, 3}


如何检查议程数组中“ id”字段中的这些sessionID,并仅将ID匹配的这些对象拉到新数组中。

注意:


这是Java不是javascript
议程数组对象中的“ id”是
整型
sessionID数组是字符串的数组


我尝试了几个例子,但没有一个起作用!

最佳答案

[更新] Arraylist示例:

如果您使用的是Java 8,请考虑以下设置:

List<Agenda> agenda = new ArrayList<Agenda>();
agenda.add(new Agenda(1));
agenda.add(new Agenda(2));
agenda.add(new Agenda(3));

String[] sessionID = new String[] {"1", "3"};


你可以做:

List<Agenda> agendaFiltered = agenda.stream()
        .filter(agendaObj -> Arrays.binarySearch(sessionID, Integer.toString(agendaObj.getId())) >= 0)
        .collect(Collectors.toList());


然后,如果您运行:

agendaFiltered.forEach(System.out::println);


它只会打印:

Agenda{id=1}
Agenda{id=3}

10-08 17:36