0
点赞
收藏
分享

微信扫一扫

Map内存泄露问题

八怪不姓丑 2022-04-06 阅读 66
java

       如下代码Map的key为一个对象,对象重写hashcode并且根据对象属性变化,如果对象的属性值发生变化,对象的hashcode也会变化,就不能取出原来的值,最终导致资源浪费。

import java.util.HashMap;
import java.util.Map;

public class Demo {

    public static void main(String[] args) {

        Map<User, String> map = new HashMap<>();
        User user = new User();
        user.name = "zhangsan";
        System.out.println(user.hashCode());
        map.put(user, "zhangsan");
        System.out.println(map.get(user));
        user.name = "lisi";
        System.out.println(user.hashCode());
        System.out.println(map.get(user));
    }

    private static class User {
        String name;

        @Override
        public int hashCode() {
            return System.identityHashCode(name);
        }
    }

}
举报

相关推荐

0 条评论