我正在尝试从
中删除最后一个元素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
删除密钥类[]。
我尝试使用.remove()
,但没有任何反映。
答案 0 :(得分:6)
HashMap
中没有订单,因此,您无法删除最后一项。使用LinkedHashMap
来获得插入顺序。
答案 1 :(得分:1)
您有效地拥有两个集合,因此如果您希望删除"Class"
元素,则需要在两者中执行此操作。如果始终删除两个集合中tmp
的最后元素,则表示您关注,并假设header
为List<String>
,你应该做这样的事情:
String keyToRemove = header.remove(header.size()-1);
map.remove(keyToRemove);
答案 2 :(得分:1)
HashMap
没有根据索引排列它的元素,但是你只能根据它key
检索元素,所以如果你必须使用HashMap
,你必须为它的键添加一个增量索引,所以当你把一个索引增加的新元素加上一个并放入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>());
}
然后你可以检查最后的索引值,这将是最后一个元素的索引。
答案 3 :(得分:1)
@Unmesha SreeVeni:使用LinkedHashMap
删除最后一个元素,因为HashMap
不维护元素的插入顺序。