用map保存一个相同key里的数据

YTTCJJ 2012-06-28 10:33:31
如:String s="{"name":xin,"sex":"男","age":"22"}"
String s1="{"name":chen,"sex":"女","age":"20"}"
key值相同 现在想把他们的value都保存在一个key里。现在就是遇到保存时覆盖了上面一个S 得到的是S1的数据。

之前有网友说把Map定义成Map<String,List>形式就可以了。
但自己试了之后还是求不出来。希望大家能指导下。


for(){//外层的循环
if(map.containsKey(key)){
map.get(key).add(当前数值);
} else
map.put(key,value)
}
...全文
3687 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
桃园闲人 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

value里面是对象还用map<String,List>?直接map<String,object>不就OK了?
[/Quote]
不知道这位仁兄看清lz的需求没?lz想用一个key对应一个集合(里面存放一组对象),如果用map<String,object>你想如何存放,又如何取这组对象了?
YTTCJJ 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

那么就是用map<String,List<OBject>>了,
if(map.containsKey(key)){
map.get(key).add(object);
}
else{
//如果没有new一个新的list
List vals = new ArrayList();
vals.add(object);
map.put(key,vals)……
[/Quote]

嗯嗯。可以了。把分给你了。谢谢啊。
k1_long 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你的代码写错了,这样才能实现你想要的。
Java code

for(){//外层的循环
if(map.containsKey(key)){
map.get(key).add(当前数值);
}
else{
List vals = new ArrayList();
vals.add(value);
map.put(key,vals)
}
[/Quote]
正解
小小X 2012-06-28
  • 打赏
  • 举报
回复
List<Map<String, String>> lMap = new ArrayList<Map<String,String>>();
一个Map放一个人的信息

Map<String,List>用这个的话,一个人的名字和他的年龄怎么对应起来
桃园闲人 2012-06-28
  • 打赏
  • 举报
回复
你的代码写错了,这样才能实现你想要的。

for(){//外层的循环
if(map.containsKey(key)){
map.get(key).add(当前数值);
}
else{
List vals = new ArrayList();
vals.add(value);
map.put(key,vals)
}
zxcliuwei 2012-06-28
  • 打赏
  • 举报
回复 1
那么就是用map<String,List<OBject>>了,
if(map.containsKey(key)){
map.get(key).add(object);
}
else{
//如果没有new一个新的list
List vals = new ArrayList();
vals.add(object);
map.put(key,vals)
}
YTTCJJ 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

楼主请问你的意思是这样么?
String s="{"name":xin,"sex":"男","age":"22"}"
String s1="{"name":chen,"sex":"女","age":"20"}"
String s1="{"name":liu,"sex":"男","age":"20"}"
需要把s1作为key,获取的时候能够把s1下面的chen和liu都取出来么?
……
[/Quote]
s1作为key,获取的时候能够把key为s1的两个实例化对象都可以取出来。

而HashMap默认的方法,put的的时候,会把相同key的前面的value给覆盖。
而获取的时候,就只能获取后面put进去的的实例化对象信息了。
hetaoblog 2012-06-28
  • 打赏
  • 举报
回复
好复杂
huage 2012-06-28
  • 打赏
  • 举报
回复

for(){//外层的循环
if(map.containsKey(key)){
map.put(key ,map.get(key)+"&"+value);
} else
map.put(key,value)
}


Map<String , String>
zxcliuwei 2012-06-28
  • 打赏
  • 举报
回复
楼主请问你的意思是这样么?
String s="{"name":xin,"sex":"男","age":"22"}"
String s1="{"name":chen,"sex":"女","age":"20"}"
String s1="{"name":liu,"sex":"男","age":"20"}"
需要把s1作为key,获取的时候能够把s1下面的chen和liu都取出来么?
huage 2012-06-28
  • 打赏
  • 举报
回复
可以考虑将多个String连在一起,用特殊隔开 比如&& 或者其他的特殊符号,取出的时候分割下就ok
YTTCJJ 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

用IdentityHashMap
[/Quote]

这个类今天也试过了,似乎只能保证key不唯一(即可以可以重复)的map。恰好和我所需相反呀。
我需要的是 key 唯一,value 可以重复。
YTTCJJ 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 4 楼 的回复:

为何要这样用map,你直接用list不就好了啊。真是何苦!!!


我想保证name的值是唯一的,所以就用map,而不用list了。
[/Quote]

更正下,我要表达的意思是 key唯一。也就是我的key里想要存放的是s,s1。value里想存放的是每一个实例化对象包含 姓名,性别,年龄属性。
我现在需要存放相同的key,不同的object实例化对象。
YTTCJJ 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

value里面是对象还用map<String,List>?直接map<String,object>不就OK了?
[/Quote]

恩。但是,我现在需要存放相同的key,不同的object实例化对象。
如果直接使用HashMap<String,Object>则如果key相同则前面的数据会被覆盖。
zxcliuwei 2012-06-28
  • 打赏
  • 举报
回复
value里面是对象还用map<String,List>?直接map<String,object>不就OK了?
YTTCJJ 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

请问楼主你的map的key是放xin,chen这个数据么,还有value放什么?是sex:男,age:18这样的键值对的数据么
[/Quote]

我的key里想要存放的是s,s1;value里想存放的是每一个实例化对象包含 姓名,性别,年龄属性。
zxcliuwei 2012-06-28
  • 打赏
  • 举报
回复
请问楼主你的map的key是放xin,chen这个数据么,还有value放什么?是sex:男,age:18这样的键值对的数据么
YTTCJJ 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

为何要这样用map,你直接用list不就好了啊。真是何苦!!!
[/Quote]

我想保证name的值是唯一的,所以就用map,而不用list了。
五哥 2012-06-28
  • 打赏
  • 举报
回复
用IdentityHashMap
zxcliuwei 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
List<Map<String, String>> lMap = new ArrayList<Map<String,String>>();
一个Map放一个人的信息

Map<String,List>用这个的话,一个人的名字和他的年龄怎么对应起来
[/Quote]
这才是正解!
加载更多回复(1)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧