2011-01-24 1 views
0

У меня есть список с ключом (не уникальным) и набором значений, связанных с этим ключом. Ключ может появляться более одного раза в списке. Для всех множественных вхождений конкретного ключа мне нужно иметь возможность добавить соответствующий связанный набор значений.Java - Самый эффективный метод для добавления значений, связанных с дублирующими ключами?

Способ, которым я получаю вход, состоит в том, что некоторые из значений, по-видимому, разбиты на несколько строк.

(Прежде чем отвечать, пожалуйста, имейте в виду, что я получаю входные данные в виде таблиц Excel и читаю из листа Excel в Java с помощью Apache POI. Поэтому, прежде чем предлагать мне изменить способ данных чтобы избежать избыточности, обратите внимание, что это что-то вне моего контроля, так как обрабатывается другой командой.)

Я пробовал использовать многомерные массивы, но это было очень больно.

Итак, я ищу предложения по более эффективному методу реализации моего списка/набора с использованием коллекции Java, чтобы иметь возможность добавлять значения, связанные с дублирующими ключами. Я не ищу какую-либо форму кода, а просто предложения для наиболее эффективного способа реализации этого. Если вы можете назвать несколько методов, я могу взять их оттуда.

Я по-настоящему ценю ваше время для ознакомления с этим.

ответ

1

Если по эффективному, вы имеете в виду прост в использовании и обслуживании, то MultiMap из коллекции Apache Commons - это всего лишь билет.

+0

Мне нужно было пойти с Гуавой, как Джон Скит, предложенный из-за отсутствия общих коллекций Apache полной поддержки для Generics. – Powerlord

+0

Справедливо, это было первое, что мне пришло в голову. – biziclop

+0

Multimap от Apache было намного легче понять, основываясь на моем уровне знания Java, по сравнению с Guava Multimap, который слегка запугал меня при более близком рассмотрении. Посмотрите, работает ли это. Ценю вашу помощь. –

4

Похоже, вы хотите собрать Multimap от Guava. Как Map, но где вы получаете набор значений, связанных с ключом, а не только один.

Посмотрите на класс Multimaps для обычных методов производства.

+0

Multimap выглядит великолепно. Я попытаюсь реализовать. Но, если я застрял, мне может понадобиться дополнительная помощь. Оцените свой оперативный ответ. –

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