2015-07-24 3 views
5

У меня есть объект DTO, используемый для получения данных с моего сервера. Он может использоваться для одного или нескольких элементов. Этот DTO инкапсулирует Collection, содержащий данные.Что можно сохранить в коллекции?

Когда мой DTO приносит мне только один элемент, как его хранить?

Пример кода:

public class DataDTO implements Serializable 
{ 
    private Collection<Data> data; 

    public DataDTO() 
    { 
    } 

    public Collection<Data> getData() 
    { 
     return data; 
    } 


    public void setData(Collection<Data> data) 
    { 
     this.data = data; 
    } 


    public void setData(Data singleData) 
    { 
     // At this time I use an ArrayList initialized with a capacity of 1 
     this.data = new ArrayList<Data>(1); 
     this.data.add(singleData); 
    } 
} 
+0

Как насчет использования 'Array'? – Arpit

+0

Один элемент - это не коллекция: P –

+0

Я знаю, что один элемент не является коллекцией, но я не хочу добавлять специальный объект DTO только для случая, когда у меня есть только один элемент ^^ – Sara

ответ

14

Вы можете использовать одиночные методы от Коллекции класс.

singletonList: Возвращает неизменный список, содержащий только указанный объект. Возвращаемый список является сериализуемым.

singleton: Возвращает неизменяемый набор, содержащий только указанный объект. Возвращенный набор является сериализуемым.

singletonMap: Возвращает неизменяемую карту, сопоставляя только указанный ключ указанному значению. Возвращенная карта сериализуема.

+0

В чем отличия в терминах пространства памяти и характеристик? – Sara

+1

@Sara совершенно нет. Взгляните на [исходный код] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Collections.java?av=f) - классы «singletonXXX» - это просто простые адаптеры для разных типов интерфейса: вы выбираете один из них, основываясь на том, хотите ли вы использовать API 'Set' или API' '' '' '' '', очевидно, не 'Collection'. –

5

Вопрос заключается в том, что вы хотите сделать позже с ним? Есть ли вероятность, что вы добавите еще один элемент? Если нет, то вы могли бы использовать

this.data = Collections.singletonList(singleData);

Если есть шанс, что вы можете добавить элементы позже, то это типичный вопрос, что список реализации использовать, ArrayList прекрасно подходит для многих случаев.

+0

Или 'Collections.singleton' с тем же эффектом. –

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