簡體   English   中英

訪問Java映射內的ArrayList

[英]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");

來自Map的Javadoc 。#put

將指定值與該映射中的指定鍵關聯(可選操作)。 如果該映射先前包含該鍵的映射,則將舊值替換為指定的值 (僅當m.containsKey(k)返回true時,才認為映射m包含鍵k的映射。)

因此,您可以看到,如果您修改array ,則不需要刪除該對。 只需使用上一個鍵重新映射即可。

而且您的代碼中存在語法錯誤。 您無法實例化接口。 所以你的代碼應該是

private Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

TreeMapMap接口的任何直接具體子類。

暫無
暫無

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

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