[英]Access an ArrayList inside a Java Map
這是我在此網站上發布的第一個問題!
在大學的Java作業的最后一部分中,要求我的班級表明我們了解如何使用不同類型的數組。
一方面,我們需要制作和維護一個Map(key,value)。 但是,我們需要使用ArrayList(String)作為Map的值。
添加到此Map看起來很容易:只需檢查所討論的Map是否不包含指定的鍵,然后創建一個數組,將其值填充並“放入”該數組,並使用String到Map。
private Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
public void addToMap(String key, String value) {
if (!this.map.containsKey(key) {
ArrayList<String> array = new ArrayList<String>();
array.add(value);
this.map.put(key, array);
}
else {
this.map.get(key).add(value); // Does this add a new item to the current ArrayList?
}
}
但是,如果我想編輯該數組的內容怎么辦? 我今天才剛剛開始查看Maps,所以對他們來說還有些陌生,但是我看到他們有一種“放置”方法-而且我了解通常放置,彈出和推入的含義,因此有點熟悉。 我是否需要將數組的內容復制到一個新的臨時目錄中,刪除()舊的“ key => value”對,並使用其他數據創建一個新的數組?
非常感謝您的幫助! :D
您的Map
包含對ArrayList
的引用。
String key = "some list name";
// This assumes this entry is in the map; doesn't check for null
ArrayList<String> listInMap = map.get(key);
listInMap.add("new thing to add to list");
當您使用Map.get()
它將返回對映射中ArrayList
的引用,而不是其副本。 然后,您可以通過返回的引用來修改該List
。
要編輯一個特定arrayList的內容,您首先需要從地圖上獲取它,然后只需從數組中添加/刪除:
ArrayList<String> list = map.get("key");
list.get(index);
list.add("something");
將指定值與該映射中的指定鍵關聯(可選操作)。 如果該映射先前包含該鍵的映射,則將舊值替換為指定的值 。 (僅當m.containsKey(k)返回true時,才認為映射m包含鍵k的映射。)
因此,您可以看到,如果您修改array
,則不需要刪除該對。 只需使用上一個鍵重新映射即可。
而且您的代碼中存在語法錯誤。 您無法實例化接口。 所以你的代碼應該是
private Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
或TreeMap
或Map
接口的任何直接具體子類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.