赞
踩
我想知道是否有一种更有效的方法来处理哈希映射.
我有以下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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。