gpt4 book ai didi

java - 填充对象 HashMap 的 HashMap

转载 作者:行者123 更新时间:2023-12-02 00:28:06 25 4
gpt4 key购买 nike

我正在处理代码,但在填充 HashMap 的 HashMap 时遇到问题。声明如下;

HashMap<Games, HashMap<Store, Integer>> myMap = new HashMap<Games, HashMap<Store,   Integer>>();

其中GameStore是单独的对象类,只有一个类变量标题。

如何在 HashMap 中创建对象的实例并填充两个 HashMap 。因为我需要为特定商店中的游戏标记一个整数。而每个商店都有不同的商店和不同的游戏。

提前致谢

编辑

游戏类

package gameStore;

public class Games {
private String title;

public Games(String inTitle){
setTitle(inTitle);
}
private String getTitle() {
return title;
}
private void setTitle(String title) {
this.title = title;
}
}

商店类

package gameStore;

public class LocalStores {
private String nameOfStore;

public LocalStores(String inNameOfStore){
setNameOfStore(inNameOfStore);
}
private void setNameOfStore(String nameOfStore){
this.nameOfStore = nameOfStore;
}
}

最佳答案

我会做这样的事情:

void addToMap(Games games, Store store, int value) {
HashMap<Store,Integer> m = myMap.get(games);
if (m == null) {
m = new HashMap<Store,Integer>();
myMap.put(games, m);
}
m.put(store, value);
}

更新:

由于 Games 和 Store 都用作 HashMap 的键,因此我建议您添加 hashCode 和 equals 方法:

游戏:

public int hashCode() {
return title.hashCode();
}

public boolean equals(Object obj) {
if (!(obj instanceof Games)) {
return false;
}
Games other = (Games)obj;
return title.equals(other.title);
}

本地商店:

public int hashCode() {
return nameOfStore.hashCode();
}

public boolean equals(Object obj) {
if (!(obj instanceof LocalStores)) {
return false;
}
LocalStores other = (LocalStores)obj;
return nameOfStore.equals(other.nameOfStore);
}

现在,为了简单起见,假设输入文件的每一行都包含三个由制表符分隔的字段:游戏标题、商店名称和整数值。您将按如下方式阅读:

InputStream stream = new FileInputStream("myfile");
try {
Reader reader = new InputStreamReader(stream, "UTF-8"); // or another encoding
try {
BufferedInputStream in = new BufferedInputStream(reader);
try {
String line = in.readLine();
while (line != null) {
String[] fields = line.split("[\\t]");
if (fields.length == 3) {
addToMap(new Games(fields[0]), new LocalStores(fields[1]), Integer.parseInt(fields[2]));
}
line = in.readLine();
}
} finally {
in.close();
}
} finally {
reader.close();
}
} finally {
stream.close();
}

关于java - 填充对象 HashMap 的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9662606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com