public class KGEntry {
private String sku;
private String question;
private String answer;
private String brand;
public static final class KGEntryKey {
private String sku;
private String question;
public KGEntryKey(String sku, String question) {
this.sku = sku;
this.question = question;
}
// hash and equals
}
}
现在我要创建:
Map<KGEntryKey, KGEntry> map = new HashMap<>();
由于KGEntry和KGEntryKey中的'sku'和'question'相同,因此如果我将设计更改为以下内容,是否会减少内存使用量:
public class KGEntry {
private String answer;
private String brand;
public static final class KGEntryKey {
private String sku;
private String question;
public KGEntryKey(String sku, String question) {
this.sku = sku;
this.question = question;
}
// hash and equals
}
}
现在填充地图:
Map<KGEntryKey, KGEntry> map = new HashMap<>();
在我看来,节省内存没有。在这种情况下是否可以节省内存使用?
答案 0 :(得分:1)
两个类KGEntryKey和KGEntry彼此之间没有任何关系,只是一个类的定义在另一个类之内。它们的内存消耗不会互相影响。
如果您具有彼此的引用,例如,KGEntry中实例类型为KGEntryKey的实例字段,则为或(如果KGEntryKey不是static
(在这种情况下,KGEntryKey实例将引用其包含的KGEntry实例),那么您提出的问题可能更有意义。
答案 1 :(得分:0)
您正试图节省美分,而不是进行美元交易。不用担心您的代码。有效-很好。内存性能很差。更具全局性,对于给定的10行代码无法完成。不用担心,我敢肯定,重构此代码不会获得任何可见的内存利润。