簡體   English   中英

android arraylist獲取哈希圖位置

[英]android arraylist get hashmap position

我有一個類似下面的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獲取哈希圖的位置。 例如:'type'修剪器的哈希圖在arraylist中的位置為0,我想檢索位置值“ 0”

我會寫一個小的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;    
    }

為了使此方法非常通用,請將“類型”和“ TRIMMER”作為方法參數,以便您可以傳遞任何要檢查的鍵和值對。

您的數據結構不可能有效地做到這一點。 您既可以將自己的位置存儲在每個HashMap也可以遍歷所有條目並搜索您要查找的類型。

當然,您可以定義另一個HashMap<String, Integer> ,它將所有類型的字符串映射到相應的ArrayList索引。

其他人的回答也是正確的,但是您也可以使用Java8來完成此操作。

例如:

int index = IntStream.range(0, mArrType.size()).
                filter(i -> mArrType.get(i).get("type").equals("TRIMMER"))
                .findFirst().getAsInt();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM