Java Map中key用可变对象会是什么后果?

结论:put之后key变化了在get就get为null了

Scala代码

    val map = new mutable.HashMap[java.util.List[String], String]()
    val key = new util.ArrayList[String]()
    map.put(key, "value")
    println(map)
    println(map.get(key).getOrElse("null"))
    key.add("11")
    println(map.get(key).getOrElse("null"))
    key.add("111")
    println(map.get(key).getOrElse("null"))

    println(map)

  

原文地址:https://www.cnblogs.com/leodaxin/p/10990615.html

时间: 2024-10-16 03:30:28

Java Map中key用可变对象会是什么后果?的相关文章

Java集合篇六:Map中key值不可重复的测试

package com.test.collection; import java.util.HashMap; import java.util.Map; //Map中key值不可重复的测试 public class TestEquals { public static void main(String[] args) { String s1=new String("abc"); String s2=new String("abc"); Map map=new Has

Java Map获取key和value 以及String字符串转List方法

一.问题描述 这里描述两个问题: 1.Java Map获取key和value的方法: 2.String字符串转List的方法: 二.解决方法 1.Java Map获取key和value的方法   2.String字符串转List的方法  

Java Map按照Key和Value排序【转】

package kingtool.sort; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import jav

Java Map按键(Key)排序和按值(Value)排序

Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value).1.按键排序jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 TreeMap(Comparator<? super K> comparator)  传入我们自定义的比较器即可实现按键排序. Java代码   public class MapSortDemo { public static void main(Strin

Java多线程编程之不可变对象模式

在多线程环境中,为了保证共享数据的一致性,往往需要对共享数据的使用进行加锁,但是加锁操作本身就会带来一定的开销,这里可以使用将共享数据使用不可变对象进行封装,从而避免加锁操作. 1. 模型角色 不可变对象指的是,对象内部没有提供任何可供修改对象数据的方法,如果需要修改共享变量的任何数据,都需要先构建整个共享对象,然后对共享对象进行整体的替换,通过这种方式来达到对共享对象数据一致性的保证.如下是不可变对象设计的类图: 如下是各个角色功能的描述: ImmutableObject:不可变对象的载体.对

JAVA map按照key,value比较

import java.util.*; public class MapSortDemo { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("1", "4");        map.put("3", "3");        map.put("2"

Java Map 按Key排序和按Value排序

package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Tr

java Map 迭代key,value 最简洁的方法

import java.util.HashMap; import java.util.Map; public class EntrySets { public static void main(String[] args) { Map<Object, Object> map = new HashMap<Object, Object>(); map.put("k1", "v1"); map.put("k2", "v

关于Map中key和Value的灵活获取(推荐给初学JAVA的受苦受难的兄弟姐妹们)

1.Map和Map.Entery区别 笔者认为很多人误解这两个类,或者说不太会灵活应用,下面我来简单说一下我的理解(仅供参考). →Map : 无可厚非,学过java的不管是小鸟还是老牛都已经敲得不想再敲了,是属于一个键值对的集合类,属于线程不安全的,关于Map线程安全的可以另外实现,以后会讲到. For Example: Map<String,Object> map = new HashMap<String,Object>(); map.put("1",1);