为了账号安全,请及时绑定邮箱和手机立即绑定

在存储在 HashMap 中的 ArrayList 中搜索值

在存储在 HashMap 中的 ArrayList 中搜索值

不负相思意 2021-10-27 10:55:48
我想弄清楚如何检索存储在 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());


查看完整回答
反对 回复 2021-10-27
?
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

    });


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信