java减少hashmap内存_Java-HashMap内存:优化

我想知道是否有一种更有效的方法来处理哈希映射.

我有以下Map(主地图),它由其键和另一个Map作为值组成.

final Map> primaryMap = new HashMap<>();

Map secondaryMap = new HashMap<>();

我为每个键分配2张secondaryMaps,然后再次初始化次要地图,其顺序与下面显示的顺序相似:

secondaryMap = new HashMap<>();

secondaryMap.put(true, "A");

primaryMap.put("DOG", listedMap);

secondaryMap.put(false, "B");

primaryMap.put("DOG", listedMap);

secondaryMap = new HashMap<>();

secondaryMap.put(true, "C");

primaryMap.put("CAT", listedMap);

secondaryMap.put(false, "D");

primaryMap.put("CAT", listedMap);

难道有一种更有效的方法可以做到这一点?

在调用secondaryMap = new HashMap<>();之前,secondaryMap.clear()是否会对内存产生影响?

提前谢谢了,

解决方法:

如果内部Map只能有两个键,则可以将其替换为自定义类:

final Map> primaryMap = new HashMap<>();

可能 :

final Map map = new HashMap<>();

您可以填充它,例如:

map.put("DOG", new Foo("A", "B"));

其中的Foo构造函数可以是:

public Foo(String valueForTrue, Sting valueForFalse){

this.valueForTrue = valueForTrue;

this.valueForFalse = valueForFalse;

}

它将节省一些内存(将减少所需的对象),但总的来说,它将使您的代码更加清晰.

当然,如果您仅在错误情况为true的情况下添加String值,则可以在Foo中使用工厂而不是公共构造函数,例如:

private Foo(){

}

public static Foo ofTrue(String valueForTrue){

Foo foo = new Foo();

foo.valueForTrue = valueForTrue;

return foo;

}

public static Foo ofFalse(String valueForFalse){

Foo foo = new Foo();

foo.valueForFalse = valueForFalse;

return foo;

}

public static Foo of(String valueForTrue, Sting valueForFalse){

Foo foo = new Foo();

foo.valueForTrue = valueForTrue;

foo.valueForFalse = valueForFalse;

return foo;

}

标签:hashmap,memory,java

来源: https://codeday.me/bug/20191025/1926343.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值