[英]Remove last element from HashMap
我正在嘗試從中刪除最后一個元素
Map<String, List<String>> map = new HashMap<String, List<String>>();
我的代碼是
StringTokenizer stheader = new StringTokenizer(value.toString(),",");
while (stheader.hasMoreTokens()){
String tmp = stheader.nextToken();
header.add(tmp);
System.out.println("tmp"+header);
map.put(tmp, new ArrayList<String>());
}
System.out.println(map.size());
輸出:
tmp[Sepal_Length, Sepal_Width, Petal_Length, Petal_Width, Class]
map{Petal_Width=[], Class=[], Petal_Length=[], Sepal_Length=[], Sepal_Width=[]}
我想從map
或tmp
刪除鍵Class []。
我嘗試使用.remove()
但沒有任何反應。
HashMap
沒有順序,因此,您不能刪除最后一項。 使用LinkedHashMap
具有插入順序。
您實際上有兩個集合,因此如果要刪除"Class"
元素,則需要在兩個集合中都這樣做。 如果您總是關心兩個集合中始終刪除tmp
的最后一個元素,並且假設header
是List<String>
,則應該執行以下操作:
String keyToRemove = header.remove(header.size()-1);
map.remove(keyToRemove);
HashMap
不會根據索引排列其元素,但是您只能根據其key
檢索元素,因此,如果必須使用HashMap
,則必須為其鍵添加一個增量索引,因此在放置新元素時該索引以1遞增,然后將鍵放入HashMap
,如下所示:
Map<Map<int,String>, List<String>> map = new HashMap<Map<int,String>, List<String>>();
int index = 0;
StringTokenizer stheader = new StringTokenizer(value.toString(),",");
while (stheader.hasMoreTokens()){
String tmp = stheader.nextToken();
header.add(tmp);
System.out.println("tmp"+header);
Map<int, String> temp_map = new HashMap<int, String>();
temp_map.put(index, tmp);
index ++;
map.put(temp_map, new ArrayList<String>());
}
然后您可以檢查結尾處的index值,它將是最后一個元素的索引。
@Unmesha SreeVeni:使用LinkedHashMap
刪除最后一個元素,因為HashMap
不會維護元素的插入順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.