android arraylist获取hashmap位置

时间:2016-10-07 03:48:26

标签: java android arraylist

我有一个类似下面的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;

3 个答案:

答案 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();