2012-04-27 32 views
13

Vì vậy, tôi biết cách có danh sách được liên kết và sử dụng phương thức thêm vào các mục nhập theo mục nhập. Tuy nhiên, tôi không muốn thêm mục nhập theo mục nhập. Có cách nào để khai báo một danh sách liên kết với các giá trị ban đầu trong danh sách không?Làm thế nào tôi có thể khởi tạo một LinkedList với các mục/giá trị trong nó?

Ví dụ: nếu tôi muốn có 1.0 & 2.0 trong danh sách có điều gì đó tôi có thể thực hiện trong một dòng không? Cái gì như:

List<Double> temp1 = new LinkedList<Double>(1,2); 
+0

Phụ thuộc những gì bạn muốn làm gì với "mục", mặc dù nó có thể là một ý tưởng tốt hơn để thể sử dụng một 'Bản đồ' hoặc có các danh sách riêng biệt cho các khóa và giá trị. Đặt chúng lại với nhau, ngay cạnh nhau trong một danh sách, thực sự là vụng về. –

+0

@LouisWasserman: Không giống như OP muốn mục nhập theo nghĩa của các mục nhập bản đồ ... chỉ là các phần tử trong danh sách. – ColinD

+0

Vâng, đó là lý do tại sao tôi đề xuất chia nhỏ danh sách thành hai. Chắc chắn nếu bạn đang thêm các cặp "liên quan" của các phần tử vào danh sách, nó sẽ có ý nghĩa hơn để bao bọc chúng trong một đối tượng hoặc chia chúng thành hai danh sách. Chắc chắn có một giải pháp cho câu hỏi cơ bản của OP "Làm thế nào tôi có thể khởi tạo một danh sách với một số yếu tố cụ thể", nhưng phần còn lại của câu hỏi có vẻ như đó không phải là cách tiếp cận tốt nhất cho vấn đề thực tế của OP. –

Trả lời

43

Bạn có thể làm điều đó theo cách này:

List<Double> temp1 = new LinkedList<Double>(Arrays.asList(1.0, 2.0)); 
8

LinkedList có constructor sau đây, mà chấp nhận một tham số có kiểu Collection:

public LinkedList(Collection<? extends E> c) 

constructor này 'Constructs một danh sách chứa các phần tử của bộ sưu tập được chỉ định, theo thứ tự chúng được bộ lặp của bộ sưu tập trả về. '

Vì vậy, bạn có thể sử dụng hàm tạo này để khai báo số LinkedList và khởi tạo nó với các giá trị tại thời điểm khai báo. Bạn có thể cung cấp một phiên bản của bất kỳ loại Collection<Double> nào.

Nếu bạn chỉ có một tập hợp các giá trị nhưng không phải là một đối tượng Collection, sau đó bạn có thể sử dụng lớp java.util.Arrays trong đó có các asList() phương pháp tĩnh mà sẽ chuyển đổi các thiết lập các giá trị cung cấp cho một List và trở lại. Xem ví dụ dưới đây:

List<Double> list = new LinkedList<Double>(Arrays.asList(1.2,1.3,3.2)); 

Nếu bạn cần một thể hiện của List<Double> sau đó bạn phải cung cấp giá trị với một vị trí thập phân, nếu không thì bạn sẽ nhận được một thể hiện của List<Integer> với các giá trị.

3

Bạn cũng có thể tạo ra phương pháp như

static <T> LinkedList<T> createLinkedList(T...elements) { 
    LinkedList<T> newList = new LinkedList<T>(); 
    for (T el : elements) { 
     newList.add(el); 
    } 

    return newList; 
} 

Và sử dụng nó với:

 LinkedList<Integer> a = createLinkedList(1, 2, 3); 

     for (Integer item : a) { 
      System.out.println(item); 
     } 
Các vấn đề liên quan