簡體   English   中英

轉換清單 <Object[]> 進入HashMap <Integer,List<String> &gt;什么是最佳方法?

[英]Convert List<Object[]> into HashMap<Integer,List<String>> what can be a optimal way?

我有List<Object[]>說li和類似的項目

li.add(new Object[]{1,"Orange"}) 
li.add(new Object[]{1,"Apple"}) 
li.add(new Object[]{1,"Orange"}) 
li.add(new Object[]{2,"Guava"}) 
li.add(new Object[]{3,"Apple"}) 
li.add(new Object[]{3,"Grapes"}) 

即一個整數可以是多次。現在我必須將此列表轉換為HashMap HashMap<Integer,List<String>>類型什么是最佳方法?

這是可以幫助您實現的一系列步驟。

  1. 遍歷列表。
  2. 對於每個元素,檢查映射中是否已經存在Object[0]
    一種。 如果存在,則獲取該鍵的List<String>並將Object[1]添加到其中。
    如果不是,則創建一個新的List<String> ,將Object[1]添加到其中,並以Object[0]作為鍵向地圖添加一個條目,並以Object[1]添加到新創建的List中。價值。
  3. 繼續進行此操作,直到列表末尾。

注意:必要時,您需要將Object[0] IntegerInteger並將Object[1]強制轉換為String

如果要避免地圖用戶HashSet的值列表中的List中的重復值,而不是List

與HashSet

HashMap<Integer, HashSet<String>> map =new HashMap<Integer, HashSet<String>>();
for (Object[] objects : lst) {
HashSet<String> valueSet;
if(map.containsKey((Integer)objects[0])){
valueSet = map.get((Integer)objects[0]);
}
else{
   valueSet = new HashSet<String>();
   map.put((Integer)objects[0],valueSet);
}
valueSet.add((String)objects[1]);
}
System.out.println(map);

使用清單

HashMap<Integer, List<String>> map =new HashMap<Integer, List<String>>();
for (Object[] objects : lst) {
List<String> valueList;
if(map.containsKey((Integer)objects[0])){
valueList = map.get((Integer)objects[0]);
}
else{
valueList = new ArrayList<String>();
map.put((Integer)objects[0],valueList);
}
valueList.add((String)objects[1]);
}
System.out.println(map);

我將使用具有更好性能的SparseArray<ArrayList<String>> 實際上,您的IDE(eclipse確實)可能會建議您將HashMap<Integer,List<String>>更改為SparseArray

     SparseArray<ArrayList<String>> list;

      for (Object[] objects : yourlist) {

            Integer number=((Integer) objects[0]);
            String value=((String) objects[1]);
            if (list.get(number) == null) {
                 ArrayList<String> temp= new  ArrayList<String>(); 
                 temp.put(value);
                 list.append(number, temp);
            }
            else list.get(number).put(value);

       }

嘗試,

    Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();

    for (Object[] objects : li) {
        if (map.containsKey(objects[0])) {
            List<String> list = map.get(objects[0]);
            list.add((String) objects[1]);
            map.put((Integer) objects[0], list);
        } else {
            List<String> list = new ArrayList<>();
            list.add((String) objects[1]);
            map.put((Integer) objects[0], list);
        }
    }
    System.out.println(map);

暫無
暫無

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

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