我目前正在进行一项任务,我们会在其中获得一份包含国家/地区,国家/地区等列表的文本文件......作为任务的一部分,我们应该能够提升所有与之相关的国家/地区。用户喜欢到大陆。我知道我可以为每个大陆创建一个ArrayList或类似的东西,但是我想知道像hashmap这样的东西是否是一种可行的方法呢?
提前感谢任何输入。
答案 0 :(得分:0)
最重要的是,你为什么要去HashMap?毫无疑问,如果你可能记得你在每个大陆的地图中插入的关键值,它将使检索逻辑变得容易。
但是,您可以使用的逻辑可能就像是,您需要解析作为输入给出的列表,并将位于该大陆名称下方的每个国家放入列表中并放入HashMap中。现在,在检索过程中,您只需提供密钥并检索特定大陆的国家/地区列表。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class TestMaps {
public void check(HashMap<Integer,List<String>> m) {
System.out.println(m.get(1));
//System.out.println(m.get(2));
System.out.println(m);
}
public static void main(String[] args) {
HashMap <Integer,List<String>> m = new HashMap<Integer,List<String>>();
List <String> ls =new ArrayList<String>();
ls.add("India");
ls.add("Indonesia");
m.put(1, ls);
TestMaps test=new TestMaps();
test.check(m);
}
}
或许,您也可以将String value continent name作为键,但Integer始终是键值的更好选择。但是,要将键值设置为String,只需替换上面的代码,如:
HashMap<String, List<String>> m = new HashMap<String, List<String>>();
List<String> ls = new ArrayList<String>();
ls.add("India");
ls.add("Indonesia");
m.put("Asia", ls);
除此之外,您还可以使用列表列表并开发所需的功能。
注意:您需要为输入文本文件提供解析逻辑。我没有给出相同的代码。我希望输入文件的类型为:
Continent 1
Country 1
Country 2
Country 3
Country n
Continent 2
Country n
Continent n
答案 1 :(得分:0)
You can create a <Map> with "Continent" as Key and Collection<Countires> as Value.
Apply the Collections.sort() - Collection<Countires> when you add it to <Map>.
e.g. Map map = new HashMap<String, List<String>);
map.put("Asia", // India, SriLanka.......................);