问题描述
- Map中一个key不是只对应一个value吗?
-
java小白对粗体显示代码不解private String[] names = new String[]{"虎头","弄玉","李清照","李白"};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
List> listItems = new ArrayList>();
for (int i = 0; i < names.length; i++)
{
Map listItem = new HashMap();
listItem.put("personName", names[i]);
listItems.add(listItem);
}
......
解决方案
for (int i = 0; i < names.length; i++)
{
Map listItem = new HashMap();
listItem.put("personName", names[i]);
listItems.add(listItem);
}
中,每次for循环创建一个新的Map,与原来的Map无关了,等for循环结束一次释放一次局部变量。
解决方案二:
其实在HashMap并不是我们看到的一个key只对应一个value,如果你的key仅仅只在euqals上相等,而在 == 上为false时,在存储时会将hash值一样的value放在数组的某个位置上,然后在该位置再接一个链表就相当于数组的这个值指向的是这个链表的地址值,然后链表中间可能有多个值。