2011-10-14 37 views
11

Tôi có một câu hỏi rất đơn giản:Java mảng nhanh chóng danh sách

Làm thế nào tôi có thể làm cho mã này đơn giản hơn trên Java:

ArrayList<String> s = new ArrayList<String>(); 
s.add("str1"); 
s.add("str hello"); 
s.add("str bye"); 
//... 

Something như thế:

ArrayList<String> s = {"a1", "str", "mystr"}; 

hay rằng:

ArrayList<String> s = new ArrayList<String>("a1", "str", "mystr"); 

hoặc rằng:

ArrayList<String> s = new ArrayList<String>(); 
s.addAll("a1", "str", "mystr"); 

hay rằng:

ArrayList<String> s = new ArrayList<String>(); 
s.addAll(new ArrayElements("a1", "str", "mystr")); 

tôi chỉ muốn gợi ý cú pháp. Cảm ơn.

+0

http://stackoverflow.com/questions/2760995/java-arraylist-initialization – Vlad

Trả lời

19

Làm thế nào về:

ArrayList<String> s = new ArrayList<String>(); 
Collections.addAll(s, "a1", "str", "mystr"); 
5
List<String> s = Arrays.asList(new String[] {"a1", "str", "mystr"}); 
+0

Tôi không tin thats phương pháp nhanh nhất, bạn đang tạo ra rất nhiều các đối tượng ở đây .. – Rob

+0

@ Rob: OP yêu cầu đơn giản, không cho nhanh – amit

+9

'Danh sách s = Arrays.asList (" a1 "," str "," mystr ");' thậm chí còn tốt hơn –

4

Tôi sẽ sử dụng Guava và tuyệt vời Lists lớp của nó:

List<String> list = Lists.newArrayList("a1", "str", "mystr"); 
22

List<String> s = Arrays.asList("a1", "str", "mystr");

+4

Điều này trả về danh sách kích thước cố định không phải là java .util.ArrayList. Vì vậy, nó là tốt khi không có thêm hoặc loại bỏ các yếu tố là cần thiết. – x22

+3

Điều này đúng. Nó không phải là rõ ràng từ OP cho dù điều này sẽ là một vấn đề hay không. – dty

4

Bạn có thể sử dụng dấu ngoặc kép:

ArrayList<String> s = new ArrayList<String>() 
{{ 
    add("str1"); 
    add("str hello"); 
    add("str bye"); 
    //... 
}}; 
+2

Thay vì chỉ tạo ra cú pháp bí truyền, không phải là một ý tưởng tốt để giải thích cho OP đó là gì và nó hoạt động như thế nào? – dty

+1

dty, đó là khởi động đôi cú đúp, nó giải thích chi tiết trong http://c2.com/cgi/wiki?DoubleBraceInitialization. – SerCe

0

Nếu bạn đang sử dụng Java 9, bạn có thể sử dụng List.of():

List<String> s = List.of("str1", "str hello", "str bye"); 

Nhưng điều này sẽ là một danh sách không thay đổi. Nếu bạn cần một ArrayList có thể thay đổi:

ArrayList<String> s = new ArrayList<>(List.of("str1", "str hello", "str bye")) 
Các vấn đề liên quan