2015-07-24 13 views
5

Tôi đã có đối tượng DTO được sử dụng để lấy dữ liệu từ máy chủ của mình. Nó có thể được sử dụng cho một hoặc nhiều yếu tố. DTO này gói gọn Collection chứa dữ liệu.Tôi có thể lưu trữ một phần tử trong Bộ sưu tập là gì?

Khi DTO của tôi chỉ mang đến cho tôi một phần tử, tôi nên lưu trữ nó như thế nào?

Mẫu mã:

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

Điều gì về việc sử dụng 'Mảng'? – Arpit

+0

Một phần tử không phải là Bộ sưu tập: P –

+0

Tôi biết rằng một phần tử không phải là bộ sưu tập, nhưng tôi không muốn thêm đối tượng DTO đặc biệt chỉ dành cho trường hợp tôi chỉ có một phần tử ^^ – Sara

Trả lời

14

Bạn có thể sử dụng phương thức singleton từ Bộ sưu tập lớp.

singletonList: Trả về danh sách không thay đổi chỉ chứa đối tượng được chỉ định. Danh sách trả về được tuần tự hóa.

singleton: Trả về bộ không thay đổi chỉ chứa đối tượng được chỉ định. Tập hợp trả về được tuần tự hóa.

singletonMap: Trả về bản đồ không thay đổi, chỉ ánh xạ khóa được chỉ định cho giá trị được chỉ định. Bản đồ được trả về có thể được tuần tự hóa.

+0

Sự khác nhau về mặt bộ nhớ và hiệu suất của bộ nhớ là gì? – Sara

+1

@Sara hoàn toàn không có. Hãy xem [mã nguồn] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Collections.java?av=f) - Các lớp 'singletonXXX' chỉ là các adapter đơn giản với các kiểu' giao diện' khác nhau - bạn chọn một loại dựa trên việc bạn muốn sử dụng API 'Set' hay' List' API - 'Map' rõ ràng không phải là một' Bộ sưu tập'. –

5

Câu hỏi đặt ra là, những gì bạn muốn làm sau đó với nó? Có một cơ hội mà bạn migh thêm một yếu tố? Nếu không, bạn có thể sử dụng

this.data = Collections.singletonList(singleData);

Nếu có một cơ hội mà bạn có thể muốn thêm các yếu tố sau, sau đó nó là câu hỏi điển hình những gì thực hiện Danh sách sử dụng, ArrayList là tốt cho nhiều trường hợp.

+0

Hoặc 'Bộ sưu tập.singleton' có cùng tác dụng. –

Các vấn đề liên quan