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

时间:2018-10-03 16:43:58

标签: java search arraylist hashmap

我试图弄清楚如何检索存储在Hashmap中的ArrayList中存储的值。

这就是我所拥有的:

HashMap<String, ArrayList<Record>> records = new HashMap<>();

此哈希图中的关键不是我想要的。 Record对象内部有一个名为getRecordId()的方法,我希望能够通过if语句评估此recordId是否在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是唯一的。

5 个答案:

答案 0 :(得分:1)

您可以在此处使用Hashmap.entrySet()获取所有键的列表,并迭代该键集,并检查recordId是否在该特定迭代的ArrayList中存在,然后存储该键和进行计算。

如果您不确定entrySet的语法和用法,则可以在此处进行研究-https://www.geeksforgeeks.org/iterate-map-java/

答案 1 :(得分:1)

您可以使用以下语法:

records.forEach((k, v) -> {
    if (v.contains(recordId)) {
        // do something with 'k'
    }
});

在这里,我们使用forEach遍历地图。 k代表键,v代表值。您也可以使用entrySet

records.entrySet().forEach(e -> {
    if (e.getValue().contains(recordId)) {
        // do something with 'e.getKey()'
    }
});

答案 2 :(得分:1)

R.json = fake_json

答案 3 :(得分:1)

如果您使用的是Error in py_call_impl(callable, dots$args, dots$keywords): TypeError: Failed to convert object of type <class 'keras.engine.sequential.Sequential'> to Tensor. Contents: <keras.engine.sequential.Sequential object at 0x000000005491C2E8>. Consider casting elements to a supported type. ,则可以使用conv_base <- application_vgg16(include_top = FALSE, input_shape = c(150, 150, 3))

Java 8

答案 4 :(得分:1)

一种方法是流式传输地图值,并对每个值(列表)进行流式传输,并找到与搜索条件匹配的第一个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
    });