首页 > 解决方案 > 使用 HashMap 将整数映射到列表

问题描述

我编写了以下代码将键与字符串列表相关联。当我显示它时,键“2”的列表值被键“4”的值替换。“2”不应该指向它映射到的值?

 Map<Integer,List<String>>hm=new TreeMap<Integer,List<String>>();
 List<String>l=new ArrayList<String>();
 l.add("tree");
 l.add("tyre"); 
 hm.put(2, l);
 l.clear();
 l.add("treaaae");
 l.add("tyret");
 l.add("treeeqqq");
 l.add("tyreqww");
 hm.put(4, l);

标签: javastringlisthashmap

解决方案


问题是你一直在使用 list l,所以实际上项目 2 和 4 都指向同一个列表。

这将起作用:

Map<Integer,List<String>>hm=new TreeMap<Integer,List<String>>();
List<String>l=new ArrayList<String>();
l.add("tree");
l.add("tyre"); 
hm.put(2, l);
List<String>m=new ArrayList<String>();
m.add("treaaae");
m.add("tyret");
m.add("treeeqqq");
m.add("tyreqww");
hm.put(4, m);

推荐阅读