2014-02-05 6 views
0

В настоящее время я работаю над заданием, в котором мы получаем текстовый файл со списком стран, континентом стран и т. Д.. В рамках задания мы должны иметь возможность подтягивать все страны, связанные с континент по желанию пользователя. Я знаю, что могу создать ArrayList или что-то вроде этого для каждого континента, однако мне интересно, может ли что-то вроде хэш-карты быть жизнеспособным способом сделать то же самое?Как вы связываете несколько объектов с другим типом объекта?

Заранее благодарим за любой ввод.

ответ

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); 
    } 

} 

Возможно, вы также можете перейти на строку с именем значение континента как ключ но Целое всегда лучший выбор для ключа. Тем не менее, для значения ключа быть строка просто заменить приведенный выше код, как:

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 
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.......................); 
Смежные вопросы