2010-03-04 38 views
20

Mã của tôi trông như thế này:Làm thế nào để thêm tất cả các mục trong một mảng String vào một vector trong Java?

Vector<String> My_Vector=new Vector<String>(); 
String My_Array[]=new String[100]; 

for (int i=0;i<100;i++) My_Array[i]="Item_"+i; 
...... 
My_Vector.addAll(My_Array); 

Nhưng tôi có một thông báo lỗi, đúng cách để làm điều đó là gì, mà không lặp để thêm từng hạng mục?

Frank

+0

Tại sao bạn sử dụng Vector? Tôi thích một ArrayList hơn, vì nó không được đồng bộ hóa theo mặc định. – duffymo

+2

Không sử dụng Vector, nó là một lớp kế thừa, sử dụng ArrayList thay thế. Và chỉ sử dụng 'My_Vector.add (" Item _ "+ i);' thay vì sử dụng mảng trung gian –

+0

Wow. Tôi đã không thấy một Vector rút ra trong ít nhất 5 năm. :) Đưa tôi trở lại JDK 1.1. Bạn có thể muốn đi với Collections.synchronizedList (new ArrayList()). – sidereal

Trả lời

17

Vector.addAll() lấy một tập hợp trong tham số. Để chuyển đổi mảng thành Bộ sưu tập, bạn có thể sử dụng Arrays.asList():

My_Vector.addAll(Arrays.asList(My_Array)); 
+1

Câu trả lời Chris Jester-Young (hiện đang được bình chọn hàng đầu) cung cấp giải pháp thay thế tốt hơn. – espinchi

6
My_Vector.addAll(Arrays.asList(My_Array)); 

Nếu bạn để ý, Collection.addAll nhận một đối số Collection. Mảng Java không phải là Collection, nhưng Arrays.asList, kết hợp với Collection.toArray, là "cầu nối giữa các API dựa trên mảng và dựa trên bộ sưu tập".

Hoặc, với mục đích cụ thể là thêm các phần tử từ mảng vào Collection, bạn cũng có thể sử dụng phương thức trợ giúp tĩnh addAll từ lớp Collections.

Collections.addAll(My_Vector, My_Array); 
55
Collections.addAll(myVector, myArray); 

Đây là cách ưa thích để thêm các nội dung của một mảng thành một bộ sưu tập (ví dụ như một vector).

https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#addAll-java.util.Collection-T...-

Thêm tất cả các yếu tố quy định để thu quy định. Các yếu tố được thêm vào có thể được chỉ định riêng lẻ hoặc dưới dạng mảng. Hành vi của phương thức tiện lợi này giống với phương thức của c.addAll (Arrays.asList (phần tử)), nhưng phương pháp này có khả năng chạy nhanh hơn đáng kể trong hầu hết các triển khai.

+1

+1 cho sửa lỗi đánh máy của tôi, và cung cấp thay thế "nhanh hơn đáng kể" này. – polygenelubricants

+0

Việc thực hiện phương thức đó sẽ lặp: 'for (T element: elements)'. – Pindatjuh

+2

Bạn thực sự đúng, nhưng bạn không nói tại sao nó được ưa thích. Javadoc nói: hành vi của phương thức tiện lợi này giống với phương thức của c.addAll (Arrays.asList (elements)), nhưng phương thức này có khả năng chạy nhanh hơn đáng kể trong hầu hết các triển khai. –

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