Какой будет хорошая структура данных для хранения значений как Integer, так и array [String]? - PullRequest
4 голосов
/ 26 февраля 2012

Мне нужна структура данных для хранения ряда целочисленных значений, связанных с массивом строк размером переменной . Например, это то, что у меня есть -

ADDRESS   INSTRUCTION
64        ADD R1, R0, R0 
68        BGTZ R2, #32
.         .
.         .
.         .
124       J #116

, где я хочу получить INSTRUCTION , который, как я полагаю, должен храниться в виде массива строк (исключая запятую и '#') на основе значения ADDRESS , больше похоже на пара ключ-значение. Это то, что, я думаю, должно быть хорошей идеей, чтобы сохранить его ИЛИ, если вы можете предложить мне лучший подход для представления этого в памяти, это было бы здорово. (Я использую Java для кодирования.)

Хорошая структура данных ( WHICH ?) С аргументацией ( WHY ?) И подробным объяснением ( HOW ?) Была бы очень хороша.

Ответы [ 5 ]

5 голосов
/ 26 февраля 2012

ЧТО?

Map<Integer, List<String>>

ПОЧЕМУ?

  • это работает
  • это в JDK
  • это уже используется миллионами людей вокруг нас

КАК?

Map<Integer, List<String>> map = new HashMap<>();
map.put(64, new ArrayList<String>());
map.get(64).addAll("ADD", "R1", "R0", "R0");

ПРИБЫЛЬ!

2 голосов
/ 26 февраля 2012

Хотя я согласен с тем, что карта будет работать, я бы сказал, что на семантическом уровне это не совсем точное соответствие. Вместо этого я бы выбрал пользовательский объект, который имеет список (или массив) команд и целевой адрес:

public class InstructionSet{
private int address;
private String[] commands;
// getters, setters
}

А потом я бы назначил Список этих пользовательских объектов.

Но если вы хотите использовать карту, я бы пошел с Гуава Multimap

2 голосов
/ 26 февраля 2012

Карта Map<Integer, List<String>>;это естественный формат.

2 голосов
/ 26 февраля 2012
  • WHICH - Используйте интерфейс Map
  • WHY - Неявно организует данные в пары ключ-значение
  • КАК - Используйте класс, который реализует интерфейс Map (например, HashMap)
1 голос
/ 26 февраля 2012

Предыдущие ответы дают , который и некоторые из , почему . Для как см. http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

...