亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遍歷哈希圖以獲取每第四個鍵值對?

如何遍歷哈希圖以獲取每第四個鍵值對?

皈依舞 2021-12-30 16:34:08
我有一個這樣的哈希圖;key value1key value2key value3key value4key1 value5key1 value6key1 value7key1 value8key2 value9... and so on現在我想把它放在一個包含四行的 ListView 中,在 row1 中,我想要:key value1key1 value5key2 value9key3 value13 and so on till end在第 2 行,我想要:key value2key1 value6key2 value10key3 value14 and so on till end然后在第 3 行和第 4 行中也是如此??偸侵挥?4 行。我在迭代這個過程中遇到了麻煩。這是我寫的代碼,但它不起作用。String[] fourrows = hashMap.get("KEY");for (int i=0;i<fourrows.length;i++) {HashMap<String, String> listHashMap = new HashMap<>();listHashMap.put("TA",  "ROW VALUE "+fourrows[i]);for (int j=1;j<hashMap.entrySet().size();j+=4) {String val = hashMap.values().toArray()[j].toString();String key = hashMap.get(hashMap.keySet().toArray()[0]).toString();listHashMap.put("IA", key);listHashMap.put("XA", val);incmStmtList.add(listHashMap);}}//Then I pass TA, IA and XA to a simple list adapter and add it to a listView.incmAdapter = new SimpleAdapter(getContext(), incmStmtList,R.layout.content_results, new String[]{"TA", "IA", "XA"},new int[]{R.id.ta, R.id.ia, R.id.tota});listView.setVerticalScrollBarEnabled(true);listView.setAdapter(incmAdapter);謝謝。
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

而不是使用 HashMap 使用 Multimap。并基于鍵獲取 Collection 對象中的值。然后從每個 Collection 在所有列表中添加一個值。


Multimap myList = ArrayListMultimap.create();


            myList.put("key","value1");

            myList.put("key","value2");

            myList.put("key","value3");

            myList.put("key","value4");

            myList.put("key1","value5");

            myList.put("key1","value6");

            myList.put("key1","value7");

            myList.put("key1","value8");

            myList.put("key2","value9");

            myList.put("key2","value10");

            myList.put("key2","value11");

            myList.put("key2","value12");

            myList.put("key3","value13");

            myList.put("key3","value14");

            myList.put("key3","value15");

            myList.put("key3","value16");

然后從列表中獲取所有密鑰


  Set myKeySet = myList.keySet();

  Object[] keys = myKeySet.toArray();

現在您已經設置了所有密鑰。然后


    HashMap<String, String> listHashMap1 = new HashMap<>();

    HashMap<String, String> listHashMap2 = new HashMap<>();

    HashMap<String, String> listHashMap3 = new HashMap<>();

    HashMap<String, String> listHashMap4 = new HashMap<>();

現在將值添加到每個列表


  for(int i=0;i<4;i++){

        List<String> keyval = (List)myList.get((String)keys[i]);

        listHashMap1.put((String)keys[i],keyval.get(0));

        listHashMap2.put((String)keys[i],keyval.get(1));

        listHashMap3.put((String)keys[i],keyval.get(2));

        listHashMap4.put((String)keys[i],keyval.get(3));

     }

現在您已經設置了四行列表。這個 Multimap 使用的是谷歌番石榴。所以你需要在你的 gradle 中實現番石榴,如下所示: implementation 'com.google.guava:guava:26.0-jre'


查看完整回答
反對 回復 2021-12-30
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

從您提供的代碼看來,源hashMap的類型是Map<String, String[]>。


您可以遍歷地圖的條目,并為每個條目將四個值存儲在不同的結果容器中。由于您指出結果容器也應該是地圖:


    Map<String, String> one = new HashMap<>();

    Map<String, String> two = new HashMap<>();

    Map<String, String> three = new HashMap<>();

    Map<String, String> four = new HashMap<>();


    hashMap.entrySet().forEach(entry -> {

        String[] values = entry.getValue();

        one.put(entry.getKey(), values[0]);

        two.put(entry.getKey(), values[1]);

        three.put(entry.getKey(), values[2]);

        four.put(entry.getKey(), values[3]);

    });

注意:假設每個鍵總是正好有四個值。


查看完整回答
反對 回復 2021-12-30
  • 2 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號