2015-07-24 9 views
5

Sunucumdan veri almak için kullanılan bir DTO nesnesi var. Bir veya birkaç eleman için kullanılabilir. Bu DTO, verileri içeren bir Collection'u kapsüllemektedir.Koleksiyondaki tek bir öğeyi ne kaydedebilirim?

DTO'm sadece bir öğe getirdiğinde, onu nasıl depolamalıyım?

örnek kod:

sorudur
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' kullanma hakkında ne düşünüyorsunuz? – Arpit

+0

Tek öğe bir Koleksiyon değil: P –

+0

Bir öğenin koleksiyon olmadığını biliyorum, ancak yalnızca tek bir öğeye sahip olduğum durum için özel bir DTO nesnesi eklemek istemiyorum ^^ – Sara

cevap

14

Koleksiyonlar sınıfından singleton yöntemlerini kullanabilirsiniz.

singletonList: Yalnızca belirtilen nesneyi içeren bir değişmez listeyi döndürür. Döndürülen liste serileştirilebilir.

singleton: Yalnızca belirtilen nesneyi içeren bir değişmez kümeyi döndürür. Döndürülen dizi serileştirilebilir.

singletonMap: Yalnızca belirtilen anahtarı belirtilen değere eşleyen bir değişmez haritayı döndürür. Döndürülen harita serileştirilebilir.

+0

Bellek alanı ve performans açısından farklılıklar nelerdir? – Sara

+1

@Sara kesinlikle yok. [Kaynak kodu] 'na bir göz atın (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Collections.java?av=f) - 'singletonXXX' sınıfları, farklı' arayüz 'türlerine ait basit adaptörlerdir -' Set' API'sini veya 'List' API'sini kullanmak istediğinizi temel alarak birini seçin - 'Map' açıkça bir' Collection' değildir. –

5

, ne onunla daha sonra yapmak istiyorsun? Başka bir element eklemek için bir şans var mı? Değilse, daha sonra unsurları eklemek isteyebileceğiniz bir şans var ise,

this.data = Collections.singletonList(singleData);

kullanabilirsiniz, o zaman kullanmak ne Liste uygulaması tipik soru, ArrayList pek çok durum için gayet iyi.

+0

Veya "Collections.singleton" aynı etkiyle. –

İlgili konular