2012-12-31 29 views
55

thể trùng lặp:
how to add new elements to a String[] array?thêm chuỗi Chuỗi mảng

Tôi mới trong Java vì vậy tôi cần sự giúp đỡ

Tôi có

String [] scripts = new String [] ("test3","test4","test5"); 

và Tôi muốn thêm strin mới gs (string1, string2) để mảng này (script) cho ví dụ

String string1= " test1" 
String string2 = "test2" 

Tôi muốn thêm chuỗi mới không có trong init nhưng trong giai đoạn sau

Làm thế nào tôi có thể làm điều đó?

+2

Bạn có thể sử dụng 'Danh sách' (như' ArrayList') không? Hoặc bạn có thể tạo một mảng mới với kích thước lớn hơn, vòng lặp trong mảng cũ thêm từ index = 2. Sau đó, thêm các phần tử mới vào chỉ mục '0' và' 1'. – Nishant

+1

Vì vậy, bạn chưa quen với SO, hãy tìm kiếm trước khi đăng câu hỏi để tránh downvote. – vels4j

+0

Đi tới 'java.util.Collections' nếu bạn cần các phần tử được sửa đổi động. ánh xạ yêu cầu và loại Bộ sưu tập có sẵn. cho ở trên, như tất cả các gợi ý, 'ArrayList' là thích hợp hơn. – VinayVeluri

Trả lời

87

Bạn không thể thay đổi kích thước mảng trong java.

Khi kích thước của mảng được khai báo, nó vẫn cố định.

Thay vào đó bạn có thể sử dụng ArrayList có kích thước động, có nghĩa là bạn không cần phải lo lắng về kích thước của nó. Nếu danh sách mảng của bạn không đủ lớn để chứa các giá trị mới thì nó sẽ được tự động thay đổi kích cỡ.

ArrayList<String> ar = new ArrayList<String>(); 
String s1 ="Test1"; 
String s2 ="Test2"; 
String s3 ="Test3"; 
ar.add(s1); 
ar.add(s2); 
ar.add(s3); 

String s4 ="Test4"; 
ar.add(s4); 
+0

Đảm bảo cũng nhập java.util.ArrayList – wizlog

12

Đầu tiên, mã này ở đây,

string [] scripts = new String [] ("test3","test4","test5"); 

nên

String[] scripts = new String [] {"test3","test4","test5"}; 

Vui lòng đọc hướng dẫn này trên Arrays

Thứ hai,

Mảng được cố định siz e, vì vậy bạn không thể thêm chuỗi mới vào mảng trên. Bạn có thể ghi đè lên giá trị hiện

scripts[0] = string1; 

(hoặc)

Tạo mảng với kích thước sau đó tiếp tục bổ sung thêm các yếu tố cho đến khi nó đã đầy.

Nếu bạn muốn mảng có thể thay đổi kích thước, hãy cân nhắc sử dụng ArrayList.

6

bạn sẽ phải viết ra một số phương pháp để tạo ra một mảng tạm thời và sau đó sao chép nó như

public String[] increaseArray(String[] theArray, int increaseBy) 
{ 
    int i = theArray.length; 
    int n = ++i; 
    String[] newArray = new String[n]; 
    for(int cnt=0;cnt<theArray.length;cnt++) 
    { 
     newArray[cnt] = theArray[cnt]; 
    } 
    return newArray; 
} 

hay The ArrayList sẽ là hữu ích để giải quyết vấn đề của bạn.

+1

+1 tốt. Cũng có thể sử dụng System.arrayCopy – vels4j

+0

Bạn có thể sử dụng Arrays.copyOf() để đạt được điều tương tự. –

2

Vì các mảng Java chứa một số giá trị cố định, bạn cần phải tạo một mảng mới có chiều dài là 5 trong trường hợp này. Giải pháp tốt hơn là sử dụng các số ArrayList và chỉ cần thêm chuỗi vào mảng.

Ví dụ:

ArrayList<String> scripts = new ArrayList<String>(); 
scripts.add("test3"); 
scripts.add("test4"); 
scripts.add("test5"); 

// Then later you can add more Strings to the ArrayList 
scripts.add("test1"); 
scripts.add("test2"); 
6

Như nhiều câu trả lời gợi ý giải pháp tốt hơn là sử dụng ArrayList. Kích thước ArrayList không cố định và dễ quản lý.

Có thể thay đổi kích thước mảng của giao diện Danh sách. Thực hiện tất cả các hoạt động danh sách tùy chọn và cho phép tất cả các phần tử, bao gồm cả null. Ngoài việc triển khai thực hiện giao diện Danh sách, lớp này cung cấp các phương thức để thao tác kích thước của mảng được sử dụng trong nội bộ để lưu trữ danh sách.

Mỗi thể hiện ArrayList có dung lượng. Dung lượng là kích thước của mảng được sử dụng để lưu trữ các phần tử trong danh sách. Nó luôn luôn là ít nhất là lớn như kích thước danh sách. Khi các phần tử được thêm vào một ArrayList, khả năng của nó sẽ tự động tăng lên.

Lưu ý rằng việc triển khai này không được đồng bộ hóa.

ArrayList<String> scripts = new ArrayList<String>(); 
scripts.add("test1"); 
scripts.add("test2"); 
scripts.add("test3");