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

我想弄清楚如何检索存储在 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 是唯一的。


不负相思意
浏览 129回答 3
3回答

白板的微信

如果您正在使用,Java 8您可以使用stream://List&nbsp;of&nbsp;keys&nbsp;which&nbsp;contains&nbsp;your&nbsp;desired&nbsp;Record&nbsp;at&nbsp;it's&nbsp;value(ArrayList) List<String>&nbsp;requiredListOfKeys&nbsp;=&nbsp;records.keySet().stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(x&nbsp;->&nbsp;records.get(x) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.contains(record)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toList());

12345678_0001

一种方法是流式传输地图值,对于每个值(这是一个列表),流式传输它并找到Record与您的搜索条件匹配的第一个实例。然后,如果找到了这样的记录,请对它执行任何操作:boolean found = records.values().stream()&nbsp; &nbsp; .flatMap(List::stream) // or .flatMap(list -> list.stream())&nbsp; &nbsp; .filter(entry -> recordId.equals(entry.getRecordId()))&nbsp; &nbsp; .findFirst()&nbsp; &nbsp; .ifPresent(entry -> {&nbsp; &nbsp; &nbsp; &nbsp; // do something with the found record&nbsp; &nbsp; });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java