簡體   English   中英

如何提取哈希表的數組列表並在Android中循環遍歷?

[英]How to extract list of arraylist of hashmap and loop through it in android?

我有如下列表的hashmap arraylist。 如果能匹配顯示其各自的值,請您幫我了解如何遍歷它以獲取密鑰並將密鑰與特定數據進行比較。

List<ArrayList<HashMap>> li = new ArrayList<ArrayList<HashMap>>();
    li = SyncSettings.labelSharedInstance;

以下是哈希圖存儲視圖的arraylist列表(作為參考,我也添加了xml)。

在此處輸入圖片說明

<labels>
        <label id="lblMS">
            <text language="EN" value="Morning Sync"/>
            <text language="DE" value="Morgan Sync"/>
        </label>
        <label id="lblES">
            <text language="EN" value="Evening Sync"/>
            <text language="DE" value="Sync Abend"/>
        </label>
        <label id="lblAS">
            <text language="EN" value="Afternoon Sync"/>
            <text language="DE" value="Sync Afternoon"/>
        </label>
    </labels>

最初,我將獲取設備語言,並且需要使用哈希圖中的語言檢查設備語言。 如果匹配,我需要顯示相應的語言。

到目前為止,我所取得的成就如下。

for (ArrayList<HashMap> entry : li) {
        Set<String> keys = entry.keySet();
        for (String key : keys) {
         //I'm just seeing whether i'm doing in a right way or not. So i was just printing.But i was getting nothing 
            System.out.println("key = " + key);
            System.out.println("value = " + value);
        }

您能幫我進一步嗎? 謝謝。

    ArrayList<HashMap<String, String>> arrayList;
    ArrayList<String> lblMSList, lblASList, lblESList;
    arrayList = new ArrayList<HashMap<String, String>>();

    lblMSList= new ArrayList<String>();
    lblASList= new ArrayList<String>();
    lblESList= new ArrayList<String>();

    arrayList = getAllData();

    if (arrayList.size() != 0)
        {
            for (int i = 0; i < arrayList.size(); i++)
            {
                lblMSList.add(arrayList.get(i).get("lblMS"));
                lblASList.add(arrayList.get(i).get("lblES"));
                lblESList.add(arrayList.get(i).get("lblAS"));
            }
        }

希望能幫助到你。

假設提供了xml,則可以創建以下數據結構:

    List<ArrayList<HashMap<String, String>>> listSuper = new ArrayList<>();//List of label in your xml

    ArrayList<HashMap<String, String>> listInner = new ArrayList<>();//Correspond to a label in your xml

    HashMap<String, String> hashMapLblMs = new HashMap<>();
    hashMapLblMs.put("EN", "Morning Sync");
    hashMapLblMs.put("DE", "Morgan Sync");
    listInner.add(hashMapLblMs);

    HashMap<String, String> hashMaplblES = new HashMap<>();
    hashMaplblES.put("EN", "Evening Sync");
    hashMaplblES.put("DE", "Sync Abend");
    listInner.add(hashMaplblES);

    listSuper.add(listInner);

現在,我們可以使用for循環對此進行迭代:

for (int i = 0; i < listSuper.size(); i++) {
        ArrayList<HashMap<String, String>> listInner1 = listSuper.get(i);
        for (HashMap<String, String> map : listInner1) {
            for (Map.Entry<String, String> entrySet : map.entrySet()) {
                System.out.println("key = " + entrySet.getKey());
                System.out.println("value = " + entrySet.getValue());
            }
        }
    }
    ArrayList<ArrayList<HashMap<String, String>>> li = new ArrayList<>();
    for (ArrayList<HashMap<String, String>> myList : li) {
        for (HashMap<String, String> myMap : myList) {
            for (String key : myMap.keySet()) {
                Log.e("key: ", "is " + key);
                Log.e("value: ", "is " + myMap.get(key));
            }
        }
    }

請這樣嘗試!

檢查以下代碼:

List<ArrayList<HashMap<String, String>>> li = new ArrayList<ArrayList<HashMap<String, String>>>();

//Outer loop to get arraylist of list
for(int i = 0; i < li.size(); i++){

ArrayList<HashMap<String, String>> temp_list=li.get(i);

//inner loop to get hashMap for each entry inside arraylist 
for (Entry<String, String> mapEntry : temp_list.get(i).entrySet()) {
                    String key = mapEntry.getKey();
                    String value = mapEntry.getValue();
                    // Log.d("LIST:", "" + key + "::" + value);

                }


}

暫無
暫無

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

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