当前位置:   article > 正文

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

java 减小map占用空间

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

我有以下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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/940332
推荐阅读
相关标签
  

闽ICP备14008679号