50 câu hỏi phỏng vấn và câu trả lời hàng đầu của Array (2025)
Dưới đây là các câu hỏi và câu trả lời phỏng vấn về mảng dành cho người mới vào nghề cũng như ứng viên có kinh nghiệm để có được công việc mơ ước của mình. Mảng là một phần không thể thiếu của lập trình và nhiều ngôn ngữ lập trình khác nhau như C, C++, Python, Java và Perl đều sử dụng mảng.
1) Ý bạn là gì khi nói tới Mảng?
- Mảng là tập hợp các dữ liệu có kiểu dữ liệu tương tự nhau.
- Mảng đối tượng lưu trữ nhiều biến có cùng kiểu.
- Nó có thể chứa các kiểu dữ liệu nguyên thủy và tham chiếu đối tượng.
- Mảng luôn luôn cố định
Tải xuống PDF miễn phí: Câu hỏi phỏng vấn Array & Câu trả lời
2) Làm thế nào để tạo một mảng?
Mảng được khai báo tương tự như cách khai báo biến, nhưng bạn cần thêm [] sau kiểu. Ví dụ: int [] intArray; Chúng ta có thể khai báo mảng Java như một trường, trường tĩnh, biến cục bộ hoặc tham số, giống như bất kỳ biến nào khác. Mảng là tập hợp các biến có kiểu đó. Sau đây là một số ví dụ khai báo mảng Java khác:
String [] stringArray;
MyClass [] myClassArray;
Tương tự với các ngôn ngữ lập trình khác.
3) Ưu điểm và nhược điểm của Array?
Ưu điểm:
- Chúng ta có thể đưa các cấu trúc dữ liệu khác như ngăn xếp, hàng đợi, danh sách liên kết, cây, đồ thị, v.v. vào Mảng.
- Mảng có thể sắp xếp nhiều phần tử cùng một lúc.
- Chúng ta có thể truy cập một phần tử của Mảng bằng cách sử dụng chỉ mục.
Nhược điểm:
- Chúng ta phải khai báo Size của một mảng trước. Tuy nhiên, chúng ta có thể không biết mình cần size nào tại thời điểm khai báo mảng.
- Mảng là cấu trúc tĩnh. Điều này có nghĩa là kích thước mảng luôn cố định, do đó chúng ta không thể tăng hoặc giảm phân bổ bộ nhớ.
4) Chúng ta có thể thay đổi kích thước của mảng khi chạy không?
Không, chúng ta không thể thay đổi kích thước mảng. Mặc dù có những kiểu dữ liệu tương tự cho phép thay đổi kích thước.

5) Bạn có thể khai báo một mảng mà không chỉ định kích thước của mảng không?
Không, chúng ta không thể khai báo một mảng mà không chỉ định kích thước. Nếu chúng ta khai báo một mảng mà không chỉ định kích thước, nó sẽ gây ra lỗi thời gian biên dịch Ví dụ: marks = new int []; //LỖI TRÌNH BIÊN DỊCH
6) Giá trị mặc định của Mảng là gì?
Bất kỳ Mảng mới nào cũng luôn được khởi tạo với giá trị mặc định như sau
- Đối với byte, short, int, long – giá trị mặc định là số không (0).
- Đối với float, double – giá trị mặc định là 0.0.
- Đối với Boolean – giá trị mặc định là false.
- Đối với đối tượng – giá trị mặc định là null.
7) Làm thế nào để in phần tử của Mảng?
Đây là mã để in ra phần tử của mảng.
int schoolmarks [] = {25, 30, 50, 10, 5 }; System.out.println (Arrays.toString (schoolmarks));
Đầu ra là: [25, 30, 50, 10, 5]
8) Làm thế nào để so sánh hai mảng?
Nếu 2 mảng có cùng kích thước và kiểu dữ liệu thì có thể so sánh bằng cách sử dụng “Arrays.equal ()”
int [] num1 = { 1, 2, 3 }; int[] num2 = { 4, 5, 6 }; System.out.println (Arrays. Equals (num1, num2)); //false Int [] num3 = {1, 2, 3}; System.out.println (Arrays.equals (num1, num3)); //true
9) Làm thế nào để sắp xếp một Mảng?
Có thể thực hiện việc này bằng cách sử dụng phương thức tĩnh được xây dựng sẵn là Arrays.sort().
Int Marks [] = {12, 5, 7, 9}; Arrays.sort(Marks); System.out.println(Arrays.toString(Marks));//[5, 7, 9, 12]
10) Chúng ta có thể khai báo kích thước mảng là số âm không?
Không. Chúng ta không thể khai báo số nguyên âm là kích thước mảng. Nếu chúng ta khai báo, sẽ không có lỗi biên dịch. Tuy nhiên, chúng ta sẽ nhận được NegativeArraySizeException khi chạy.
11) Khi nào chúng ta sẽ gặp lỗi ArrayStoreException?
Đây là một ngoại lệ thời gian chạy. Ví dụ, chúng ta chỉ có thể lưu trữ các phần tử chuỗi trong một Mảng chuỗi. Nếu ai đó cố gắng chèn phần tử số nguyên vào Mảng chuỗi này, thì chúng ta sẽ nhận được ArrayStoreException khi chạy.
12) Chúng ta có thể thêm hoặc xóa một phần tử sau khi gán một mảng không?
Không, điều đó không thể được.
13) Mảng ẩn danh có nghĩa là gì? Giải thích bằng ví dụ?
Mảng ẩn danh có nghĩa là mảng không có tham chiếu nào. Thí dụ:-
//Creating anonymous arrays System.out.println(new int[]{11, 12, 13, 14, 15}.length); //Output : 5 System.out.println(new int[]{31, 94, 75, 64, 41}[1]); //Output : 94 }}
14) Có sự khác biệt nào giữa int[] a và int a[] không?
Không có sự khác biệt cả hai đều là pháp lý tuyên bố.
15) Có 2 kiểu dữ liệu mảng int. Một kiểu chứa 50 phần tử và một kiểu chứa 30 phần tử. Chúng ta có thể gán mảng 50 phần tử cho một mảng 30 phần tử không?
Có, chúng ta có thể gán miễn là chúng cùng loại. Trình biên dịch sẽ chỉ kiểm tra loại của mảng, không phải kích thước.
int[] ab = new int[30]; int[] cd = new int[50]; a = b; //Compiler checks only type, not the size
16) int a[] = new int[3]{1, 2, 3} – đây có phải là cách đúng để khai báo mảng trong Java không?
Không. Chúng ta không nên đề cập đến kích thước của mảng khi cung cấp các phần tử mảng.
17) Làm thế nào để sao chép một mảng vào một mảng khác?
Dưới đây là bốn thủ thuật có sẵn trong Java để sao chép một mảng.
- Sử dụng “Vòng lặp For”
- Sử dụng phương thức “Arrays.copyOf()”
- Sử dụng phương thức “System.arraycopy()”
- Sử dụng phương thức “clone()”
18) Mảng “jagged” trong Java là gì?
Mảng răng cưa là Mảng chứa các mảng có độ dài khác nhau. Mảng răng cưa còn được gọi là mảng đa chiều.
19) Khi nào ArrayIndexOutOfBoundsException xảy ra?
Đây là ngoại lệ thời gian chạy. Nó sẽ xảy ra khi chương trình cố gắng truy cập vào chỉ mục không hợp lệ của một mảng. Chỉ mục cao hơn kích thước của mảng hoặc chỉ mục âm.
20) Bạn có thể giải thích các bước khác nhau để khai báo mảng đa chiều trong Java không?
//2D Arrays int[][] twoArray1; int twoArray2[][]; int[] twoArray3[]; //3D Arrays int[][][] threeArray1; int threeArray2[][][]; int[] threeArray3[][]; int[][] threeArray4[]; //4D Arrays int[][][][] fourArray1; int fourArray2[][][][]; int[] fourArray3[][][]; int[][] fourArray4[][]; int[][][] fourArray5[];
21) Làm thế nào để tìm kiếm một phần tử cụ thể trong một mảng?
Chúng ta có thể sử dụng phương thức Arrays.binarySearch(). Phương thức này sử dụng thuật toán tìm kiếm nhị phân.
22) Nếu bạn không khởi tạo mảng thì điều gì sẽ xảy ra?
Mảng sẽ có giá trị mặc định.
23) Làm thế nào để tìm các phần tử trùng lặp trong một mảng?
Sử dụng phương pháp Brute Force: Trong phương pháp này, chúng ta so sánh từng phần tử của một mảng với các phần tử khác. Nếu bất kỳ hai phần tử nào được tìm thấy bằng nhau hoặc giống nhau, chúng ta sẽ khai báo chúng là trùng lặp. Vui lòng tìm mã bên dưới cho cùng một
public class DuplicatesInArray { public static void main(String[] args) { String[] strArray1 = {"abc1", "def1", "mno1", "xyz1", "pqr1", "xyz1", "def1"}; for (int i = 0; i < strArray1.length-1; i++) { for (int j = i+1; j < strArray1.length; j++) { if( (strArray1[i].equals(strArray1[j])) && (i != j) ) { System.out.println("Duplicates : "+strArray1[j]); }}}} }
Đầu ra: Phần tử trùng lặp là: def1 Phần tử trùng lặp là: xyz1
24) Chúng ta có thể sử dụng Generics với mảng không?
Không, chúng ta không thể sử dụng Generic với một mảng.
25) Làm thế nào để lặp lại một mảng trong Java?
1) Sử dụng vòng lặp for thông thường
public class MainClass1 { public static void main(String[] args) { int[] a1 = new int[]{45, 12, 78, 34, 89, 21}; //Iterating over an array using normal for loop for (int i = 0; i < a1.length; i++) { System.out.println(a1[i]); }}}
2) Sử dụng vòng lặp for mới mở rộng
public class MainClass1 { public static void main(String[] args) { int[] a2 = new int[]{45, 12, 78, 34, 89, 21}; //Iterating over an array using extended for loop for (int i: a2){ System.out.println(i); }}}
26) Bộ nhớ dành cho mảng trong Java được phân bổ ở đâu?
Trong Java, bộ nhớ cho mảng luôn được phân bổ trên heap vì mảng trong Java là đối tượng.
27) Bạn có thể cho tôi biết tên lớp của một mảng trong Java không?
Mảng là một đối tượng. Để lấy lại tên lớp, chúng ta có thể sử dụng phương thức getClass().getName() trên đối tượng.
28) “int a[] = new int[3]{1, 2, 3}” – Đây có phải là cách hợp pháp để xác định mảng không?
Không. Chúng ta không nên khai báo kích thước của mảng khi cung cấp các phần tử mảng.
29) Mảng hai chiều là gì?
Một mảng của một mảng trong Java. Chúng ta có thể khai báo chúng như sau
int[][] p = new int[3][3]
là ma trận 3×3.
30) Chúng ta có mảng 3 chiều trong Java không?
Có, Java hỗ trợ mảng N chiều. Mảng đa chiều trong Java không gì khác ngoài một mảng của mảng. Ví dụ: Mảng 2 chiều là một mảng của mảng 1 chiều.
31) Chúng ta có thể làm cho mảng biến động trong Java không?
Có, chúng ta có thể tạo một mảng volatile trong Java, nhưng chúng ta chỉ có thể tạo biến trỏ tới mảng đó thành biến volatile.
32) Đầu ra của đoạn mã dưới đây sẽ là gì?
int myArr[] = new int [7]; System.out.print(myArr);
Trả lời: Đầu ra sẽ là giá trị Rác. myArr là một biến mảng, myArr trỏ đến một mảng nếu nó là số nguyên. In myArr sẽ in ra giá trị rác. Nó không giống như in myArr[0].
33) Các bước để truy cập các phần tử của mảng trong Java là gì?
Chúng ta có thể truy cập bằng cách sử dụng “index”. Index bắt đầu từ Zero(0), vì vậy phần tử đầu tiên được lưu trữ ở vị trí zero và phần tử cuối cùng sẽ là Array.length – 1. Thí dụ:- Chuỗi strArr[] = chuỗi new []{“A”, “B”, “C”, “D”, “E”}; strArr[0] có nghĩa là “A” và strArr[2] có nghĩa là “C”.
34) Bạn có thể cho tôi biết sự khác biệt giữa Array và ArrayList không?
Mảng | Lập danh sách |
---|---|
Mảng này là mảng tĩnh với kích thước cố định và không thể thay đổi sau khi đã khai báo. | ArrayList không tĩnh mà có kích thước động. Khi các phần tử được thêm vào ArrayList, dung lượng hoặc kích thước của nó sẽ tự động tăng lên. |
Nó chứa cả kiểu dữ liệu nguyên thủy và các đối tượng của một lớp. | ArrayList không chứa các kiểu dữ liệu nguyên thủy nhưng chứa các mục đối tượng. |
Mảng không có tính năng Generics. | ArrayList có tính năng Generics. |
35) Chúng ta biết rằng Mảng là đối tượng vậy tại sao chúng ta không thể viết strArray.length()?
Mảng là tham chiếu đối tượng giống như các lớp trong Java. Chúng ta có thể sử dụng các phương thức của Object như toString() và một phương thức khác là hashCode() đối với Array. Length là một mục dữ liệu của một mảng và do đó nó không phải là một phương thức. Đó là lý do tại sao chúng ta sử dụng strArray.length.
36) Làm thế nào để tìm phần tử còn thiếu trong mảng số nguyên từ 1 đến 7?
Giải pháp để giải quyết vấn đề này là tính tổng của tất cả các số trong mảng và so sánh với tổng mong đợi, sự khác biệt sẽ là số bị thiếu.
int ar [] = new int[]{1,2,3,5,6,7};
- Lấy tổng các số
- tổng = n*(n+1)/2
- Trừ tất cả các số khỏi tổng và
- bạn sẽ nhận được số còn thiếu.
- Theo logic dưới đây, sumOfNnumberss là 7*(7+1)/2=28
sumOfElements = 1+2+3+5+6+7=24 phần tử bị thiếu là = 28-24=4
int n = ar.length+1; int total = n*(n+1)/2; for(int i =0;i<ar.length;i++){ total -=ar[i];} System.out.println(total);
37) Làm thế nào để tìm phần tử trùng lặp trong một mảng?
String str = "HI RAHUL I AM FINE RAHUL"; // String with a duplicate word. String[] words = str.split(" "); // Splitting and converting to Array . for(int i = 0; i < words.length; i++){ //iterating array inside for loop for(int j = i+1; j < words.length; j++){ //iterating same array inside another for loop if (words[i].equals(words[j])){ // Using equal method i am verifying which word is repeating . System.out.println( words[i]); // here it will print duplicate . }}}
38) Làm thế nào để kiểm tra mảng có chứa giá trị hay không?
Đây là một String[] với các giá trị
public static final String[] myNames = new String[] {"B","A","K","C"};
Nếu myNames chứa giá trị đó thì nó sẽ trả về true nếu không thì trả về false. Dưới đây là hai phương thức isExists() và contains(), cả hai phương thức đều trả về true nếu giá trị khả dụng nếu không thì trả về false. Phương pháp thứ nhất Nó đang chuyển đổi một mảng thành ArrayList. Sau đó nó sẽ kiểm tra xem mảng có chứa bất kỳ giá trị nào không, sau đó nó sẽ trả về true nếu không thì trả về false.
public static <T> boolean isExists(final T[] array, final T object) { return Arrays.asList(array).contains(object); }
Phương pháp thứ hai Phương pháp này lặp qua một mảng và sử dụng phương thức equal() để tìm kiếm phần tử. Phương pháp này thực sự thực hiện tìm kiếm tuyến tính trên một mảng trong Java. Nó sẽ trả về true nếu một mảng đã cung cấp giá trị.
public static <T> boolean contains(final T[] array, final T v) { for (final T e : array) { if (e == v || v != null && v.equals(e)) { return true; } } return false; } }
39) Làm thế nào để lấy số lớn nhất và nhỏ nhất trong một mảng?
Trả lời: Logic của bài toán này:
- Chúng ta sử dụng hai biến để lưu trữ số lớn nhất và số nhỏ nhất.
- Đầu tiên, chúng ta khởi tạo lớn nhất với Integer.MIN_VALUE và
- Tiếp theo, chúng ta khởi tạo giá trị nhỏ nhất bằng Integer.MAX_VALUE.
- Trong mỗi lần lặp của vòng lặp for, chúng ta sẽ so sánh số hiện tại với số lớn nhất và số nhỏ nhất, và chúng ta sẽ cập nhật
- Nếu một số lớn hơn số lớn nhất thì nó không thể nhỏ hơn số nhỏ nhất. Điều đó có nghĩa là không cần kiểm tra xem điều kiện đầu tiên có đúng không,
- Chúng ta sẽ sử dụng khối mã if-else, trong đó phần else sẽ chỉ thực thi nếu điều kiện đầu tiên là false nghĩa là không đúng.
import java.util.Arrays; public class MaximumMinimumArrayExample{ public static void largestAndSmallest(int[] numbers) { int largest = Integer.MIN_VALUE; int smallest = Integer.MAX_VALUE; for (int number : numbers) { if (number > largest) { largest = number; } else if (number < smallest) { smallest = number; } } System.out.println("Largest is : " + largest); System.out.println("Smallest is : " + smallest); } }
40) Làm thế nào để thực hiện phép giao của hai mảng đã sắp xếp?
Trả lời: Logic: in ra phần tử nếu phần tử đó có mặt hoặc có sẵn trong cả hai mảng.
- Sử dụng hai biến chỉ số i và j, sau đó khởi tạo các giá trị i = 0, j = 0
- Nếu arr01 [i] nhỏ hơn arr02 [j] thì tăng i.
- Nếu arr01 [i] lớn hơn arr02 [j] thì tăng j.
- Nếu cả hai đều giống nhau thì in ra bất kỳ số nào và tăng cả i và j.
public static void getIntersection(int arr01[], int arr02[], int m, int n){ int i = 0, j = 0; while (i < m && j < n){ if (arr01[i] < arr02[j]) i++; else if (arr02[j] < arr01[i]) j++; else{ System.out.print(arr02[j++]+" "); i++; } } } public static void main(String args[]){ int arr01[] = {1, 2, 4, 5, 6}; int arr02[] = {2, 3, 5, 7}; int m = arr01.length; int n = arr02.length; getIntersection(arr01, arr02, m, n); }
41) Làm thế nào để lấy được hai số lớn nhất trong một mảng?
Trả lời: Logic là:
- Chúng ta sẽ gán biến đầu tiên max01 với Integer.MIN_VALUE
Ngoài ra, biến thứ hai max02 giống với max01 là Integer.MIN_VALUE.
- Chúng tôi sẽ lặp lại mảng này và so sánh từng số với max01 và max02,
- Nếu số hiện tại lớn hơn max1 thì gán max01 = number và max02 = max1.
- Ngược lại, nếu chỉ lớn hơn max02 thì chúng tôi sẽ chỉ cập nhật max02 bằng số hiện tại.
- Vào cuối mỗi lần lặp, max01 và max02 trỏ tới hai số đứng đầu trong mảng đã cho.
import java.util.Arrays; public class TopTwoMaximumNumbers{ public static void main(String args[]) { topTwoNumbers(new int[]{20, 34, 21, 87, 92, Integer.MAX_VALUE}); topTwoNumbers(new int[]{0, Integer.MIN_VALUE, -2}); topTwoNumbers(new int[]{Integer.MAX_VALUE, 0, Integer.MAX_VALUE}); topTwoNumbers(new int[]{1, 1, 0}); } public static void topTwoNumbers(int[] numbers) { int max01 = Integer.MIN_VALUE; int max02 = Integer.MIN_VALUE; for (int number : numbers) { if (number > max01) { max02 = max01; max01 = number; } else if (number > max02) { max02 = number; } } System.out.println("First largest number is : " + max01); System.out.println("Second largest number is : " + max02); } }
42) Làm thế nào để cắt hoặc xóa một phần tử khỏi mảng?
Trả lời: Logic là: Chúng ta có thể xóa hoặc cắt một phần tử bằng cách sử dụng Apache Commons ArrayUtils dựa trên chỉ mục. ArrayUtils có một số phương thức remove() quá tải.
import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class RemoveFromArray{ public static void main(String args[]) { //let's create an array for demonstration purpose int[] testArr = new int[] { 10, 102, 13, 14, 105}; System.out.println("Array size : " + testArr.length ); System.out.println("Find Contents : " + Arrays.toString(testArr)); //let's remove or delete an element from Array using Apache Commons ArrayUtils testArr = ArrayUtils.remove(testArr, 2); //removing element at index 2 //Size of array must be 1 less than original array after deleting an element System.out.println("Size of array after removing : " + testArr.length); System.out.println("Content of Array : "+ Arrays.toString(testArr)); } }
43) Logic để đảo ngược mảng là gì?
Trả lời: Logic: in phần tử theo thứ tự ngược lại.
- Khai báo một
String Array String[] s = new String[]{"My","Leg","is","cut"};
- Lặp lại bằng vòng lặp for để lấy tất cả các phần tử theo thứ tự ngược lại, tức là điểm cuối đến điểm bắt đầu.
public static void main(String[] args) {String[] s = new String[]{"My","Leg","is","cut"}; for(int i=s.length-1; i>=0; i--){ System.out.println("reverse "+s[i]);}}
44) Làm thế nào để tìm phần tử lớn thứ hai trong một mảng số nguyên?
Trả lời: Logic là:
- Lặp lại mảng đã cho bằng vòng lặp for.
- (đầu tiên nếu điều kiện arr[i] > lớn nhất):
- Nếu giá trị mảng hiện tại lớn hơn giá trị lớn nhất thì
- Di chuyển giá trị lớn nhất đến secondLargest và làm cho giá trị hiện tại là lớn nhất
- (thứ hai nếu điều kiện arr[i] > secondLargest )
- Nếu giá trị hiện tại nhỏ hơn giá trị lớn nhất và
lớn hơn secondLargest thì giá trị hiện tại trở thành
public static void main(String[] args) { int myArr[] = { 14, 46, 47, 86, 92, 52, 48, 36, 66, 85 }; int largest = myArr[0]; int secondLargest = myArr[0]; System.out.println("The given array is:" ); for (int i = 0; i < myArr.length; i++) { System.out.print(myArr[i]+"\t"); } for (int i = 0; i < myArr.length; i++) { if (myArr[i] > largest) { secondLargest = largest; largest = myArr[i]; } else if (myArr[i] > secondLargest) {secondLargest = myArr[i]; }} System.out.println("\nSecond largest number is:" + secondLargest); }
45) Viết chương trình tính tổng các giá trị của mảng đã cho.
Trả lời: Logic là:
- Khai báo và gán biến int có tổng = 0.
- Lặp lại mảng đã cho bằng vòng lặp for.
- Thêm tất cả các phần tử của mảng và giữ trong biến này là tổng.
Public static void main(String[] args) { int my_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int sum = 0; for (int i: my_array) sum += i; System.out.println("The sum is " + sum); }
46) Làm thế nào để phân biệt số không và số không trong một mảng?
Trả lời: Logic là:
- Khởi tạo bộ đếm về 0
- Duyệt inputArray từ trái sang phải
- Nếu inputArray[i] khác không
- Gán inputArray[i] cho inputArray[counter]
- Tăng bộ đếm lên 1
- Gán số không cho các phần tử còn lại
Public class SeparateZerosFromNonZeros { static void moveZerosToEnd(int inputArray[]) { int counter = 0; for (int i = 0; i < inputArray.length; i++) { if(inputArray[i] != 0) { inputArray[counter] = inputArray[i]; counter++; } } while (counter < inputArray.length) { inputArray[counter] = 0; counter++; } System.out.println(Arrays.toString(inputArray)); } public static void main(String[] args) { moveZerosToEnd(new int[] {12, 0, 7, 0, 8, 0, 3}); moveZerosToEnd(new int[] {1, -5, 0, 0, 8, 0, 1}); moveZerosToEnd(new int[] {0, 1, 0, 1, -5, 0, 4}); moveZerosToEnd(new int[] {-4, 1, 0, 0, 2, 21, 4}); } }
47) Viết chương trình chèn một phần tử vào vị trí cụ thể trong mảng?
Trả lời: Logic là:
- Chèn một phần tử vào vị trí thứ 3 của mảng (index->2, value->5)
- Lặp lại mảng đã cho theo thứ tự ngược lại bằng vòng lặp for.
- Bây giờ chèn vị trí và giá trị đã cho vào sau vòng lặp for.
Public static void main(String[] args) { int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49}; int Index_position = 2; int newValue = 5; System.out.println("Original Array : "+Arrays.toString(my_array)); for(int i=my_array.length-1; i > Index_position; i--){ my_array[i] = my_array[i-1]; }my_array[Index_position] = newValue; System.out.println("New Array: "+Arrays.toString(my_array)); }
48) Làm thế nào để lấy được chỉ số của một phần tử mảng?
Trả lời: Logic là:
- Ở mỗi bước, nó sẽ kiểm tra giá trị khóa đầu vào với giá trị của phần tử ở giữa của mảng.
- Nếu các khóa khớp nhau thì nó sẽ trả về vị trí. Trong trường hợp khác, nếu khóa nhỏ hơn khóa của phần tử ở giữa,
- Sau đó nó sẽ lặp lại vòng lặp while. Nếu mảng còn lại được tìm kiếm và nó giảm xuống còn 1 thì nó sẽ trả về -XNUMX nghĩa là không tìm thấy
public static int findIndex (int[] my_array, int t) { int startPoint = 0; int endPoint = my_array.length - 1; while (startPoint <= endPoint) { int mid = (startPoint + end) / 2; if (key == my_array[mid]) { return mid; } if (key < my_array[mid]) { endPoint = mid - 1; } else { startPoint = mid + 1; } } return -1; } Public static void main(String[] args) { int[] arr = {2, 4, 6, 8, 10, 12, 14, 16}; System.out.println("Key 14's position: "findIndex(arr, 14)); int[] arr1 = {6,34,78,123,432,900}; System.out.println("Key 432's position: "+findIndex(arr1, 432)); }
49) Chúng ta có thể mở rộng mảng sau khi khởi tạo không?
Trả lời: Logic là: Chúng ta có thể mở rộng một mảng sau khi khởi tạo bằng cách thêm một mảng mới. Vui lòng xem ví dụ bên dưới.
Public static void main(String[] args) { String [] names = new String[] { "A", "B", "C" }; String [] extended = new String[5]; extended [3] = "D"; extended [4] = "E"; System.arraycopy(names, 0, extended, 0, names.length); //here we are extending with new array extended[3] and extended[4]. for (String str: extended){ System.out.println(str); } }
đầu ra là A, B, C, D, E.
50) Làm thế nào để điền phần tử (khởi tạo ngay lập tức) vào một mảng?
Trả lời: Ví dụ này điền (khởi tạo tất cả các phần tử của mảng trong một mảng ngắn) bằng cách sử dụng phương thức Array.fill(tên mảng, giá trị) và phương thức Array.fill(tên mảng, chỉ mục bắt đầu, chỉ mục kết thúc, giá trị) của lớp Java Util.
import java.util.*; public class FillTest { public static void main(String args[]) { int array[] = new int[6]; Arrays.fill(array, 100); for (int i = 0, n = array.length; i < n; i++) { System.out.println(array[i]); } System.out.println(); Arrays.fill(array, 3, 6, 50); for (int i = 0, n = array.length; i< n; i++) { System.out.println(array[i]);}}}
đầu ra là
100,100,100,100,100,100 100,100,100,50,50,50
Thế còn việc truyền mảng làm tham số cho các hàm thì sao?
Câu 14: Sự khác biệt giữa a[] và []a
Sau lần khai báo kiểu đầu tiên, bạn không thể tạo mảng khác (cùng kiểu dữ liệu).
Nhưng bạn có thể sau khai báo kiểu thứ hai, tức là.
Int []a, b, c= int mới[kích thước]