从HashMap中删除最后一个元素

时间:2014-02-11 07:28:13

标签: java 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=[]}

我想从maptmp删除密钥类[]。

我尝试使用.remove(),但没有任何反映。

4 个答案:

答案 0 :(得分:6)

HashMap中没有订单,因此,您无法删除最后一项。使用LinkedHashMap来获得插入顺序。

答案 1 :(得分:1)

您有效地拥有两个集合,因此如果您希望删除"Class"元素,则需要在两者中执行此操作。如果始终删除两个集合中tmp最后元素,则表示您关注,并假设headerList<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不维护元素的插入顺序。