2013-06-04 4 views
1

Мне нужно хранить несколько пар данных в массиве. Может быть, несколько десятков. Мне нужно только добавить, нет необходимости удалять, нет необходимости искать. Тогда я получу доступ по индексу. Каждая пара представляет собой значение String и Integer. Java предоставляет так много способов сделать это, что является обычной практикой для чего-то подобного? Два массива? Класс в массиве?Сохранить строку String + Integer в динамическом массиве?

Я знаю, как сделать это в JavaScript:

var data = [] 
data.push(['Some name', 100]) 

//somewhere else 
data.push(['Other name', 200]) 

но мне нужно решение для Java

Спасибо.

+1

java или javascript? :) –

+0

Вы действительно хотите массив, а не список? Я бы просто создал класс, чтобы инкапсулировать эту пару предположительно связанных значений, а затем создать список этого типа, например. 'Список foos = new ArrayList ();' –

+0

Java действительно. Я использую JavaScript как пример, потому что я знаю, как это сделать в JavaScript и не знаю, как это работает на Java. – exebook

ответ

4

Например, вы можете создать класс Pair (или использовать реализации из apache commons) для хранения двух элементов в List.

List<Pair<String, Integer>> l = new ArrayList<>(); 
l.add(new Pair<String, Integer>("Some name", 100)); 

См Generic pair class и Java Pair<T,N> class implementation, чтобы увидеть, как можно реализовать класс Pair.

3

Это действительно зависит, но в целом я считаю, что лучше создать объект и использовать список:

public class MyObject { 
    private String myString; 
    private Integer myInt; 
    // getters setters 
} 

и польза:

List<MyObject> = new ArrayList<>(); 

(вы также можете использовать Pair вместо этого)

Если строки (или ints) уникальны, вы можете использовать карту, но сложнее получить индекс вставки.

Другим вариантом является только два списка: один для строк, один для целых чисел и один и тот же индекс в обоих списках.

+0

+1 для использования объекта. \ –

0

Я использую POJO, как было предложено выше, поскольку это помогает определить геттер и сеттер для всех атрибутов POJO, сравнить объекты с помощью переопределения equals и методов hashCode. Используя геттер и сеттер, вы знаете, что хранится в каком поле, и сравнение может предоставить вам сортировку объектов в соответствии с вашими требованиями. Таким образом, этот подход является более чистым и расширяемым для удовлетворения новых требований. Также, когда вы помещаете данные с последовательным ключом, поэтому каждый экземпляр Pojo можно поместить в список (если требуется в отсортированном порядке.

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