一个关于java的问题,把对象存Map里,再把Map存List里,怎么取出全部,我只取出最后一个,是否覆盖了?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个关于java的问题,把对象存Map里,再把Map存List里,怎么取出全部,我只取出最后一个,是否覆盖了?相关的知识,希望对你有一定的参考价值。

public static void main(String[] args)

HashMap<String,Zong> zhaoge=new HashMap<String,Zong>();

zhaoge.put("朝歌",new Zong("白静怡","剑客"));
zhaoge.put("朝歌",new Zong("单平","捕头"));
zhaoge.put("朝歌",new Zong("单平2","捕头2"));

HashMap<String,Zong> wadan=new HashMap<String,Zong>();
wadan.put("瓦当",new Zong("杨玉璞","将军"));
wadan.put("瓦当",new Zong("陈仓","盟主"));
wadan.put("瓦当",new Zong("陈仓2","盟主2"));
List<HashMap<String,Zong>> al=new ArrayList<HashMap<String,Zong>>();

al.add(zhaoge);
al.add(wadan);

for(Iterator<HashMap<String,Zong>> it=al.iterator();it.hasNext();)
HashMap<String,Zong> hm=it.next();
Set<Map.Entry<String,Zong>> entryset=hm.entrySet();
for(Iterator<Map.Entry<String,Zong>> it2=entryset.iterator();it2.hasNext();)
Map.Entry<String,Zong> hm2=it2.next();
String name=hm2.getKey();
Zong id=hm2.getValue();
System.out.println("势力"+name+",人物:"+id.getName()+",职务:"+id.getZong());

// System.out.println(hm);

Map不允许重复的键。Map<键,值>。你每次向里边put键没有改变,后放入的值会覆盖先前的值。导致的结果就是,你两个Map中,实际上都只有一对键值。另外你的遍历方法iterator好像使用也不对。感觉你应该把Map这些集合类搞明白在编程,就是说基础要打牢。。 参考技术A HashMap的key必须唯一,
wadan.put("瓦当",new Zong("杨玉璞","将军"));
wadan.put("瓦当",new Zong("陈仓","盟主"));
wadan.put("瓦当",new Zong("陈仓2","盟主2"));
之后,实际上前两句已经没有效果了
估计你的想法应该是
HashMap<String,List<Zong>> wadan=new HashMap<String,List<Zong>>();
List<Zong> ll=new ArrayList<Zong>();
ll.add(new Zong("杨玉璞","将军"));
ll.add(new Zong("陈仓","盟主"));
ll.add(new Zong("陈仓2","盟主2"));
wadan.put("瓦当",ll);追问

已经知道问题了 谢谢 一直以为是list出问题 原来是map的键重复了

参考技术B map是key-value的键值对,每个key对应一个value,相同的key,被覆盖,当然是这样了。追问

已经知道问题了 谢谢 一直以为是list出问题 原来是map的键重复了

java怎么把一个对象存到List里?

1、可以通过list的add方法来进行添加,可以通过get方法获取到数据内容(即可是任何对象)。

2、实体类型如果为数组的话,可以直接通过list的add方法进行添加转换,举例List<Object> list = new ArrayList<Object>(),定义一个数组类型的list对象String entity = new String[("1232"),创建一个要实体化的数组对象list.add(entity ),给list对象赋值,这样就完成了对象的转换可以获取到list的数据:list.get(0),结果就是entity对象(实际此对象是字符串)。

3、因为Object类型是任何对象类型的父类,所以不需要强制转换即可完成添加。

一、java将已保存数据的list集合传到别的类中操作进行增删改查的方法

1、可以在类中自定义构造函数,将list集合作为参数,在new对象的时候把集合传进去。

2、可以在类中定义方法,将list集合作为参数,然后使用对象调用该方法,并把list集合作为实参传进去。

参考技术A List.add(对象)到List就行了,如:
publicclass test
public List<Object> getList()
List<Object> list = new ArrayList<Object>();
xsb xs=new xsb();
xs.setXh(1);
xs.setXm("张三");
list.add(xs);
xsb xs1=new xsb();
xs1.setXh(2);
xs1.setXm("李四");
list.add(xs1);
return list;
参考技术B 语法很简单:
List<Object> list=new ArrayList<Object>();
list.add(Object);

比如我要将一个Student对象存放到list集合中,我可以这么写:
Student student=new Student();
//定义一个list集合

List<Student> list=new ArrayList<Student>();
//给该list集合添加对象

list.add(student);
参考技术C 比如你有一个User 实体类
User user = new User(); user 是new出来的对象
List<User> list = new ArrayList<User>();
list.add(user);//user放到list里
参考技术D List<Object> list = new ArrayList<Object>();
list.add(对像);本回答被提问者采纳

以上是关于一个关于java的问题,把对象存Map里,再把Map存List里,怎么取出全部,我只取出最后一个,是否覆盖了?的主要内容,如果未能解决你的问题,请参考以下文章

java题:把一个map放在list里,怎样再把它拿出来

java怎么把一个对象存到List里?

sql查询出来的内容存入map,然后把他们遍历出来

servlet里Map对象存进Session,在JSP里取出来以后Map里面值为空,这是为啥?

java中怎么list 转成 map?

JAVA 如何获取modelandview的返回值,如果把一个对象放在map集合里(假如集合名字是