我正在从文本文件中读取不同的键及其对应的键。 我想创建一个接收密钥及其相应密钥的hashmap。它需要以两种方式访问。
我该怎么做?
我设法做到了,但它只适用于左侧。
答案 0 :(得分:1)
由于每个国家只有少数成员,我会用地图来实现,只需实施一种方法来更新一对邻居中每个国家的状态。然而,如果它是一个密集的结构,即每个元素几乎所有其他元素都作为邻居,我建议使用指标矩阵:行和列是国家,交叉点上的真值定义它们是邻居。但这是第一个解决方案,带有地图:
public class Countries
{
private final Map<String, Set<String>> countries = new HashMap<String, Set<String>>();
public void addCountry(@NotNull String name) {
addNeighbourPair(name, null);
}
public void addNeighbourPair(@NotNull String first, String second) {
if (!hasCountry(first)) {
countries.put(first, new HashSet<String>());
}
if (second != null) {
if (!hasCountry(second)) {
countries.put(second, new HashSet<String>());
}
countries.get(first).add(second);
countries.get(second).add(first);
}
}
public boolean hasCountry(String name) {
return countries.containsKey(name);
}
public Set<String> getNeighbours(String name) {
return countries.get(name);
}
/*
* the correctness of this loader is validated only with respect
* to using the Countries class :)
*/
public static Countries fromFile(String borders) {
Countries countries = new Countries();
Scanner bordersload = new Scanner(new File(borders));
while (bordersload.hasNextLine()) {
String line = bordersload.nextLine();
String[] values=line.split(" : |:|: | :");
String key=String.valueOf(values[0]);
String key1=String.valueOf(values[1]);
countries.addNeighbourPair(key, key1);
}
bordersload.close();
return countries;
}
}
用法:
Countries countries = Countries.fromFile("path/to/file");
答案 1 :(得分:0)
每个地图条目都应包含一组与其相邻的国家/地区。每个国家/地区都应拥有自己的地图条目
答案 2 :(得分:0)
您可以使用<String, Set<String>>
其中key是国家/地区,值是一组邻居。对于每一行,检查映射中是否存在该国家/地区,如果存在,则更新其邻居(在该集合中添加新邻居)。如果没有,请创建一个具有值的新条目。