Map中一个key不是只对应一个value吗?

java小白对粗体显示代码不解privateString[]names=newString[]{"虎头","弄玉","李清照","李白"};@Overridepublic... 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);
}
......
listItem.put("personName", names[i]); //对这句不解
展开
 我来答
百度网友c7e345740
2014-03-29 · 超过12用户采纳过TA的回答
知道答主
回答量:23
采纳率:0%
帮助的人:29.3万
展开全部
是这样,map当中一个key只对应一个value,所以如果对同一个key用put方法的话,那么新的value就会代替旧的value
例如上面的题目,listItem.put("personName", names[i]); 调用了四次,每次新的name[i]的值会代替旧的值,所以如果最后你把listItem这个map当中的key为"personName"的值打印出来的话,那就是会是"李白",因为之前的值已经被覆盖掉了
追问
上面有一段不完整的代码应该是:List> listItems = new ArrayList();

那list是不是应该包含{personName,虎头;personName,弄玉;personName,李清照;personName,李白;}呢?如果是这样的话,本来声明的list集合的元素是Map,那personName作为Key到底对应那个值呢?
追答
这个list里面的map是完全不相关的多个map对象,而不是同一个对象

这个List> listItems = new ArrayList();的意思是有一个列表容器listItems ,这个listItems 元素是用来存储map对象的,像上面例子里面就是存储了4个map对象,然后这4个map对象里面各有一个key value对
key-value是唯一的这个是针对于同一个map对象而不是多个

意思就是说listItems 要通过使用get方法获得一个map,然后在map里面获取key和value的值

Map listItem = new HashMap();//新建一个map
listItem.put("personName", names[i]); //给这个新的map添加一组key-value
listItems.add(listItem);//把这个新的map放入listItems

所以listItems里面包含的是4个map,因为是4个完全不同的对象,所以你要问personName对应的哪个值就必须先拿到相应的map

比如listItems.get(0).get("personName")就可以拿到一个value=虎头

如果是listItems.get(1).get("personName")就可以拿到二个value=弄玉
lag087
2014-03-30 · 超过14用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:34万
展开全部
你不知道value的值是可以改变的么,就是覆盖了原来的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式