Какую структуру данных использовать? - PullRequest
1 голос
/ 15 ноября 2010

Мне нужно хранить следующие данные;

Clampls = {"23e23e", "ff333g", "fhgswq"," h65h3", "ffwwf", "34rf3"}
KJAS3.2 = {"f34f4f", "43rf2d", "3rfas1"," 1122d", "fff42", "ff33f"}
...

Я думал о том, чтобы сохранить что-то вроде этого

 Name        Tokens
  .       -> ... , ... , ... , ...
  .       -> ... , ... , ... , ...
Clampls   -> "23e23e" , "ff333g" , "fhgswq" , ... 
KJAS3.2   -> "f34f4f" , "43rf2d" , "3rfas1" , ...  
  .       -> ... , ... , ... , ...
  .       -> ... , ... , ... , ...

Так что вроде как HashMap. Я прочитал в своей книге Структуры данных и алгоритмы на Java, Р. Лафоре , и нашел то, что мне нужно, Separate Chaining / HashChain однако они объясняют это, используя собственные классы структуры данных.

Есть ли "готовая" коллекция для HashChain, которую я могу использовать в Java? Что-то вроде

Map<String, []String> theMap = new HashMap<String, []String>(); //just an example

Ответы [ 2 ]

6 голосов
/ 15 ноября 2010
Map<String, List<String>> dataStructure = new HashMap<String, List<String>>();

dataStructure.put("Clampls", Arrays.asList("23e23e", "ff333g", "fhgswq"," h65h3", "ffwwf", "34rf3"));
dataStructure.put("KJAS3.2", Arrays.asList("f34f4f", "43rf2d", "3rfas1"," 1122d", "fff42", "ff33f"));

dataStructure.put("KJAS3.3", new ArrayList<String>());
dataStructure.get("KJAS3.3").add("fhgswq");
2 голосов
/ 15 ноября 2010

Ваш вопрос не очень понятен, поэтому этот ответ может быть отключен.Если вы хотите иметь несколько значений для данного ключа, вы должны использовать MultiMap.В JDK нет реализации, но их много в общих библиотеках, например, в Google Guava (содержит бывшие коллекции Google).

Альтернативы, такие как Map<String,List<String>>, работают, но неудобны в использовании, например, у вас естьсоздать «внутренний» список самостоятельно, если ключ не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...