我想弄清楚如何检索存储在 ArrayList 中的值,存储在 Hashmap 中。这是我所拥有的:HashMap<String, ArrayList<Record>> records = new HashMap<>();这个哈希图中的关键不是我要找的。在 Record 对象中调用了一个方法getRecordId(),我希望能够recordId通过 if 语句评估 this 是否存在于 ArrayList 中。例子:if(records.values.exists(recordId)){ ...do something ...}本质上,我想遍历 ArrayList 中的所有值以查看该记录 ID 是否存在,如果存在,我将存储密钥并计算一些内容。我该怎么做?编辑:在发布这个问题之后,我想我正在做一些事情。这个怎么样:Set<Map.Entry<String, ArrayList<Record>>> entrySet = records.entrySet();for(Map.Entry<String, ArrayList<Record>> data : entrySet){ for(Record entry : data.getValue()) { if(recordId.equals(entry.getRecordId())) { // Do something here return ""; } }}如果找到了记录 ID,我需要离开循环,因为记录 ID 是唯一的。
3 回答
白板的微信
TA贡献1883条经验 获得超3个赞
如果您正在使用,Java 8
您可以使用stream
:
//List of keys which contains your desired Record at it's value(ArrayList) List<String> requiredListOfKeys = records.keySet().stream() .filter(x -> records.get(x) .contains(record)) .collect(Collectors.toList());
12345678_0001
TA贡献1802条经验 获得超5个赞
一种方法是流式传输地图值,对于每个值(这是一个列表),流式传输它并找到Record与您的搜索条件匹配的第一个实例。然后,如果找到了这样的记录,请对它执行任何操作:
boolean found = records.values().stream()
.flatMap(List::stream) // or .flatMap(list -> list.stream())
.filter(entry -> recordId.equals(entry.getRecordId()))
.findFirst()
.ifPresent(entry -> {
// do something with the found record
});
添加回答
举报
0/150
提交
取消