2015-04-14 3 views
0

У меня есть графический интерфейс, в котором люди могут вводить данные, и я не уверен, каким будет лучший способ хранения данных. Это, как я бы визуализировать данные:Какая будет лучшая структура данных? java

Cats: Cheetah, lion, puma 
Dogs: husky, lab 

Пользователь может добавить тип животного, как лисица, а затем добавить типы лисиц. Они также могут добавлять новые типы кошек и собак в существующие списки. Какая была бы лучшая структура данных для ее хранения?

ответ

0

Вы можете использовать HashMap<String, Set<String>>.

Пример:

Map<String, Set<String>> animals = new HashMap<>(); 

// To add a new category of animal 
animals.put("Cat", new HashSet<>()); 
animals.put("Dog", new HashSet<>()); 

// To add a new animal to an existing category 
animals.get("Cat").add("Puma"); 
animals.get("Cat").add("Tiger"); 
animals.get("Dog").add("Labrador"); 

// prints {Cat=[Tiger, Puma], Dog=[Labrador]} 
System.out.println(animals); 
1

Map<Family,Set<Species>>

Для конкретных классов, я мог бы использовать TreeMap и TreeSet, убедившись, что мои Family и Species типы реализации сравнимой (или эти типы могут быть заменены String). Эти типы сортируются, поэтому итерация по ним будет отображать данные в разумном порядке.

+0

Почему не установили , завернутые в классе членов –

+0

@AmirAfghani Что API будет 'класс для членов организации предусматривают, что не будет соответствовать точно также на' Family'? Если он не реализует 'Collection', определение нестандартного типа коллекции будет препятствовать взаимодействию с API-интерфейсами, основанными на коллекции. В отсутствие каких-либо убедительных оснований для его обертки я бы не стал это делать, конечно. – erickson

+0

Возможно, семья не является правильной абстракцией. Может быть, Род, или Категория, или что-то –

0

Вы могли бы просто использовать

HashMap<String,ArrayList<String>> container 

Если первая строка относится к имени типа животных и ArrayList имеет названия животных в соответствии с этим типом.

0

Вы можете использовать гуавы-х MultiMap управлять что-то вроде:

Map<Key, CollectionOfValues> 

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

Map<Genus, Members> 
+1

Правильно, может быть, а не «структура данных», у вас есть «Genus' with' members: Set 'property. – erickson

Смежные вопросы