java Map问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Map问题相关的知识,希望对你有一定的参考价值。

Map中的一个key能否对应两个不同的value?
Map中的一个value能否对应两个不同的key?
如何从Map中删除符合指定条件的value?
如何使遍历Map时取出的元素顺序与放入时一致?
如何合并两个Map?

Map中的一个key能否对应两个不同的value?

答: 不可以
Map中的一个value能否对应两个不同的key? 答:可以,但是有前提,如果你是以一个自定义对象为key,以HashMap为例,那么这个对象需要实现equals和hashCode方法(即内容相同的对象equals和hashCode结果的返回是一致的),TreeMap则需要实现比较器
如何从Map中删除符合指定条件的value?
只要提供这个key就可以了哦,如果想保留key,那么可以用map.put(key, null)来置空value
如何使遍历Map时取出的元素顺序与放入时一致?
因为Map本身是无序的,TreeMap则是根据比较器结果得到顺序,所以要实现这个很麻烦,如果有这种需求,建议lz使用List<KeyValuePair形式>来实现,要么,就自己实现一个Map吧。。。
如何合并两个Map?
Map集合是有putAll方法的,用这个就可以了,相同的key是会覆盖的哦
参考技术A 把int改成integer
。那是因为泛型,就是说map里你只能放string-string的名值对,你不加也不算错。
map里存放的是名-值对,名就是元素的索引,你只能通过名来取出值。get(object
key).不要试图同时取出a和b,a和b是存在映射的关系的,你要把a看成是b的索引。
满意请采纳。
参考技术B 1、Map中的一个key能否对应两个不同的value?
Map中的一个value能否对应两个不同的key?

不能。

2、如何从Map中删除符合指定条件的value?
是要删除value? 用相同的key、put 一个null的value

3、如何使遍历Map时取出的元素顺序与放入时一致?

map没有顺序可读,因为是key-value的。但默认枚举key、再取对应的value应该放进去的顺序的

4、如何合并两个Map?
把其实一个map的key-value放到另一个map中

java map获取到的值转为User对象

我先是把User对象封装到map里面,现在从map获取出来既User user=(User) map.get("user"),问题是无法直接转换

不论是否使用了泛型,如果对象序列相同,就可以实现强制转化。如果不能转化只有一种可能map中封装的User对象与你强制转化的对象不是同一个对象 参考技术A Map<String,User> map =new HashMap<String,User>();
User user= new User();
map.put("user",user);
User user2 =map.get("user");

参考技术B

使用java版本1.5以上 支持泛型,不用强制转换了,  如定义map的时候:

Map<String, User> map = new HashMap<String,User>();

以上是关于java Map问题的主要内容,如果未能解决你的问题,请参考以下文章

java map集合赋值 key值相同覆盖问题

java map集合赋值 key值相同覆盖问题

java map 用for循环的问题

java中map put方法的问题

JAVA:一个MAP排序的问题

关于java object对象中的map取值问题。。。