繁体   English   中英

如何在HashMap中将元素添加到ArrayList中

[英]How to add element into ArrayList in HashMap

如何在HashMap中将元素添加到ArrayList中?

    HashMap<String, ArrayList<Item>> Items = new HashMap<String, ArrayList<Item>>();

我知道,这是一个老问题。 但只是为了完整起见,还是 lambda 版本。

Map<String, List<Item>> items = new HashMap<>();
items.computeIfAbsent(key, k -> new ArrayList<>()).add(item);
HashMap<String, ArrayList<Item>> items = new HashMap<String, ArrayList<Item>>();

public synchronized void addToList(String mapKey, Item myItem) {
    List<Item> itemsList = items.get(mapKey);

    // if list does not exist create it
    if(itemsList == null) {
         itemsList = new ArrayList<Item>();
         itemsList.add(myItem);
         items.put(mapKey, itemsList);
    } else {
        // add if item is not already in list
        if(!itemsList.contains(myItem)) itemsList.add(myItem);
    }
}

首先,您必须向 Map 添加一个 ArrayList

ArrayList<Item> al = new ArrayList<Item>();

Items.add("theKey", al); 

然后您可以将一个项目添加到 Map 内部的 ArrayLIst 中,如下所示:

Items.get("theKey").add(item);  // item is an object of type Item

典型的代码是创建一个显式方法添加到列表中,并在添加时动态创建 ArrayList。 注意同步,所以列表只创建一次!

@Override
public synchronized boolean addToList(String key, Item item) {
   Collection<Item> list = theMap.get(key);
   if (list == null)  {
      list = new ArrayList<Item>();  // or, if you prefer, some other List, a Set, etc...
      theMap.put(key, list );
   }

   return list.add(item);
}
#i'm also maintaining insertion order here
Map<Integer,ArrayList> d=new LinkedHashMap<>();
for( int i=0; i<2; i++)
{
int id=s.nextInt();
ArrayList al=new ArrayList<>();
al.add(s.next());  //name
al.add(s.next());  //category
al.add(s.nextInt()); //fee
d.put(id, al);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM