java从ArrayList中的HashMap获取键和值
我有一个文件,我得到了所有的数据,并将其分离成一个HashMap。 文件如下所示
在:
前面是key
,后面是value
key1: 1
key2: 2
key3: 3
这是将文件数据放入map ArrayList的代码:
protected List<Map<String, String>> yaml_parse(BufferedReader filename) throws IOException{
String result;
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
while ((result = filename.readLine()) != null) {
Map<String, String> map = new HashMap<String, String>();
String key = result.substring(0, result.indexOf(":"));
String value = result.substring(result.lastIndexOf(":") + 2);
map.put(key, value);
list.add(map);
}
return list;
}
在另一个类中,我调用函数和println,这是输出
[{key1=1}, {key2=2}, {key3=3}]
所以我的主要问题是,我如何得到key1
并让它返回它的值
# 1 楼答案
因此,如果您对使用java-8感兴趣,那么如果映射列表包含任何键为
key1
的条目,它将返回第一个条目值,否则它将返回默认值只需使用普通for循环
# 2 楼答案
我不明白你为什么要创建
List
个地图。一个Map
将允许您放置多个键值对。以下是一种可行的方法:你可以这样使用它:
我认为您可能使用了错误的数据结构。从你的问题来看,似乎你只想要一个
Map
,而不是一个List
的Maps
# 3 楼答案
您确定这是您想要的数据结构吗
一个映射可以包含多个键/值对。为什么不在这里创建一个包含所有3个键/值对的hashmap,此时,您可以执行以下操作:
即使你有上百万个这样的东西,它仍然会很快
如果您制作单尺寸贴图并将其放入arraylist,因为您希望保留顺序,请使用
LinkedHashMap
。如果您需要能够处理重复的键,请使用guava的Multimap
,或者制作一个Map<String, List<String>>
# 4 楼答案
您应该考虑将
List<Map>
更改为Map
。您可以使用以下方法执行此操作:如果要使用当前数据结构,可以获得如下所示的所需值:
并按如下方式使用: