我有一个类似下面的ArrayList HashMap。
ArrayList<HashMap<String, String>> mArrType = new ArrayList<>();
添加了以下值
HashMap<String, String> map;
map = new HashMap<String, String>();
map.put("type", "TRIMMER");
map.put("request", "5");
map.put("actual", "0");
mArrType.add(map);
map = new HashMap<String, String>();
map.put("type", "HAND ROUTER");
map.put("request", "6");
map.put("actual", "0");
mArrType.add(map);
map = new HashMap<String, String>();
map.put("type", "AIR COMPRESSOR");
map.put("request", "6");
map.put("actual", "0");
mArrType.add(map);
问题是如何从arraylist获取hashmap的位置。例如:带有&#39; type&#39;的hashmap微调在arraylist中有一个位置0,我想检索位置值&#34; 0&#34;
答案 0 :(得分:2)
我会写一个小的util方法
private static int getTrimmerTypeMapPosition(ArrayList<HashMap<String, String>> mArrType) {
for (int i = 0; i < mArrType.size(); i++) {
HashMap<String, String> mp = mArrType.get(i);
if (mp.get("type").equals("TRIMMER")) {
return i;
}
}
return -1;
}
要使此方法非常通用,请输入&#34;键入&#34;和#34; TRIMMER&#34;作为方法参数,以便您可以传递任何键和值对来检查。
答案 1 :(得分:0)
您的数据结构无法有效实现。您可以在每个HashMap
中存储自己的位置,也可以遍历所有条目,并搜索您要查找的类型。
当然,您可以定义另一个HashMap<String, Integer>
,它将您的所有类型字符串映射到相应的ArrayList
索引。
答案 2 :(得分:0)
其他答案也是正确的,但你也可以使用Java8
来做这件事。
E.g:
int index = IntStream.range(0, mArrType.size()).
filter(i -> mArrType.get(i).get("type").equals("TRIMMER"))
.findFirst().getAsInt();