如何将多个对象链接到另一种类型的对象?

时间:2014-02-05 04:04:18

标签: java hashmap

我目前正在进行一项任务,我们会在其中获得一份包含国家/地区,国家/地区等列表的文本文件......作为任务的一部分,我们应该能够提升所有与之相关的国家/地区。用户喜欢到大陆。我知道我可以为每个大陆创建一个ArrayList或类似的东西,但是我想知道像hashmap这样的东西是否是一种可行的方法呢?

提前感谢任何输入。

2 个答案:

答案 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.......................);