2015-07-24 12 views
5

Ich habe ein DTO-Objekt verwendet, um Daten von meinem Server zu erhalten. Es kann für ein oder mehrere Elemente verwendet werden. Dieses DTO kapselt ein Collection, das die Daten enthält.Was kann ich ein einzelnes Element in einer Sammlung speichern?

Wenn mein DTO mir nur ein Element bringt, wie soll ich es speichern?

Beispielcode:

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

Wie wäre es mit 'Array'? – Arpit

+0

Ein Element ist keine Sammlung: P –

+0

Ich weiß, dass ein Element keine Sammlung ist, aber ich möchte nicht ein spezielles DTO-Objekt nur für den Fall hinzufügen, wo ich nur ein Element habe ^^ – Sara

Antwort

14

Sie können Singleton-Methoden von Collections Klasse verwenden.

singletonList: Gibt eine unveränderbare Liste zurück, die nur das angegebene Objekt enthält. Die zurückgegebene Liste ist serialisierbar.

singleton: Gibt eine unveränderbare Menge zurück, die nur das angegebene Objekt enthält. Die zurückgegebene Menge ist serialisierbar.

singletonMap: Gibt eine unveränderbare Map zurück, die nur den angegebenen Schlüssel dem angegebenen Wert zuordnet. Die zurückgegebene Karte ist serialisierbar.

+0

Was sind die Unterschiede in Bezug auf Speicherplatz und Leistungen? – Sara

+1

@Sara absolut keine. Sehen Sie sich den [Quellcode] an (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Collections.java?av=f). - Die 'singletonXXX'-Klassen sind nur einfache Adapter für verschiedene' Interface'-Typen - Sie wählen einen basierend darauf, ob Sie die 'Set'-API oder die' List'-API verwenden wollen - 'Map' ist offensichtlich keine' Collection'. –

5

Die Frage ist, was wollen Sie mit ihm später zu tun? Gibt es eine Chance, dass Sie ein weiteres Element hinzufügen? Wenn nicht, Sie

this.data = Collections.singletonList(singleData);

nutzen könnten, wenn es eine Chance gibt, die Sie vielleicht späte Elemente hinzufügen, dann ist es die typische Frage, welche Liste Implementierung zu verwenden, ist Arraylist in Ordnung für viele Fälle.

+0

Oder 'Collections.singleton' mit dem gleichen Effekt. –

Verwandte Themen