Làm cách nào để điền mảng trong Java?


83

Tôi biết cách làm điều đó bình thường, nhưng tôi có thể thề rằng bạn có thể điền như a [0] = {0,0,0,0}; Làm thế nào để bạn làm điều đó theo cách đó? Tôi đã thử Google, nhưng tôi không nhận được bất kỳ điều gì hữu ích.


1
Câu hỏi thực sự bạn nên hỏi là làm thế nào để làm cho điều này hoạt động: a [0] = someFunction (4, 0) ;. Vì lý do đó, câu trả lời "đúng" đã chọn không hữu ích.
HoldOffHunger

Câu trả lời:


63

Bạn cũng có thể làm điều đó như một phần của khai báo:

int[] a = new int[] {0, 0, 0, 0};

11
int [] a = new int [4] sẽ thực hiện điều tương tự, vì 0 là giá trị mặc định.
Zach Scrivena

5
Hoặc int [] a = {0, 0, 0, 0}; . Bạn chỉ cần int [] mới nếu hằng không được sử dụng ngay lập tức trong một khai báo.
starblue 23/02/09

4
điều này không hữu ích khi bạn có một mảng lớn. Câu trả lời của @ cdmckay là tốt hơn.
Felipe Leão

Đừng quên quy tắc lập trình lâu đời: "Nếu bạn thấy mình đang sao chép / dán mã, bạn đang làm sai." Số 0, hoặc bất kỳ giá trị mặc định nào, chỉ đang được sao chép và dán ở đây.
HoldOffHunger

262

Kiểm tra các phương thức Arrays.fill .

int[] array = new int[4];
Arrays.fill(array, 0);

21
+1 vì tôi không biết về phương thức Arrays.fill (). Tôi luôn làm điều đó với vòng lặp for. : D
Spoike 23/02/09

8
@GrantGalitz Tôi thực sự không bị thuyết phục về điều đó, bạn có liên kết đến một bài báo hoặc smt không? Bởi vì không giống như các Systemlớp, java.util.Arrayslà một lớp được thực thi bởi Java, và nhìn qua mã nguồn cho thấy nó không khác gì một vòng lặp thông thường.
Pacerier

7
Mảng int được khởi tạo bằng 0, vì vậy dòng thứ hai không cần thiết trong ví dụ trên.
Patrick Brinich-Langlois,

6
@ PatrickBrinich-Langlois: Nó vẫn có thể đáng giá để thể hiện ý định của bạn rằng nó đã được zero.
cdmckay

16

Arrays.fill(). Phương thức này được nạp chồng cho các kiểu dữ liệu khác nhau và thậm chí có một biến thể chỉ điền vào một phạm vi chỉ số cụ thể.


16

Trong Java-8, bạn có thể sử dụng IntStreamđể tạo ra một dòng số mà bạn muốn lặp lại, sau đó chuyển nó thành mảng. Cách tiếp cận này tạo ra một biểu thức phù hợp để sử dụng trong trình khởi tạo:

int[] data = IntStream.generate(() -> value).limit(size).toArray();

Ở trên sizevaluelà các biểu thức tạo ra số mục mà bạn muốn lặp lại toàn bộ và giá trị được lặp lại.

Bản giới thiệu.


10
Arrays.fill(arrayName,value);

trong java

int arrnum[] ={5,6,9,2,10};
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}
Arrays.fill(arrnum,0);
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}

Đầu ra

5 6 9 2 10
0 0 0 0 0

5

Một mảng có thể được khởi tạo bằng new Object {}cú pháp.

Ví dụ, một mảng Stringcó thể được khai báo bởi:

String[] s = new String[] {"One", "Two", "Three"};
String[] s2 = {"One", "Two", "Three"};

Nguyên thủy cũng có thể được khởi tạo tương tự bằng cách:

int[] i = new int[] {1, 2, 3};
int[] i2 = {1, 2, 3};

Hoặc một mảng của một số Object:

Point[] p = new Point[] {new Point(1, 1), new Point(2, 2)};

Tất cả các chi tiết về mảng trong Java được trình bày trong Chương 10: Mảng trong Đặc tả ngôn ngữ Java, Ấn bản thứ ba .


2

Các phần tử mảng trong Java được khởi tạo thành giá trị mặc định khi được tạo. Đối với các số, điều này có nghĩa là chúng được khởi tạo thành 0, đối với các tham chiếu chúng là null và đối với boolean, chúng là false.

Để lấp đầy mảng bằng thứ gì đó khác, bạn có thể sử dụng Arrays.fill () hoặc như một phần của khai báo

int[] a = new int[] {0, 0, 0, 0};

Không có phím tắt trong Java để điền vào các mảng với chuỗi số học như trong một số ngôn ngữ kịch bản.


-3
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

10
Chào mừng đến với trang web! Câu trả lời này sẽ được cải thiện nếu bạn có thể thêm một số giải thích cho nó, thay vì chỉ viết một số mã xuống. Tại sao câu trả lời này lại thích hợp hơn bất kỳ câu trả lời nào khác đã được cung cấp cho câu hỏi 7 tuổi này?
Mogsdad
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.