Bài viết đăng tại: https://laptrinhcanban.com
Cùng tìm hiểu về cách so sánh mảng trong Java. Bạn sẽ học được 2 cách so sánh 2 mảng trong Java, cũng như cách so sánh các phần tử trong mảng Java để tìm ra phần tử giống và khác nhau sau bài học này.
Có 2 phương pháp so sánh 2 mảng trong Java như sau:
- Phương thức Arrays.equals : so sánh 2 mảng 1 chiều trong Java
- Phương thức Arrays.deepEquals : so sánh 2 mảng đa chiều trong Java
Có thể sử dụng toán tử so sánh để so sánh mảng trong Java không?
Thông thường để so sánh hai đối tượng thuộc kiểu dữ liệu nguyên thủy trong Java, chúng ta sẽ sử dụng tới các toán tử so sánh như toán tử so sánh bằng ==
hoặc toán tử so sánh khác !=
chẳng hạn.
int a = 7; |
Tuy nhiên đối với các loại dữ liệu thuộc kiểu dữ liệu đối tượng như là mảng, thì chúng ta không thể sử dụng các toán tử này để so sánh trong tất cả các trường hợp. Ví dụ kết quả so sánh hai mảng hoàn toàn giống nhau sau đây bằng toán tử ==
lại cho ra kết quả false:
int[] a = {8, 7, 9}; |
Trường hợp duy nhất có thể dùng toán tử so sánh để so sánh mảng, là khi hai biến mảng cùng tham chiếu đến bản thể của một mảng trong bộ nhớ (thực hiện bởi phép gán) mà thôi.
int[] a = {8, 7, 9}; |
Bởi vậy để so sánh mảng trong Java, chúng ta không dùng toán tử so sánh, mà sử dụng tới các phương thức có sẵn sau đây.
So sánh 2 mảng 1 chiều trong Java | Arrays.equals
Để so sánh 2 mảng 1 chiều trong Java, chúng ta sẽ sử dụng tới phương thức equals trong class Arrays.
Arrays.equals là một phương thức thành viên trong class Arrays, có tác dụng kiểm tra tất cả các phần tử trong 2 mảng một chiều Java có giống nhau hay không.
Để sử dụng được phương thức này thì chúng ta cần phải import class Arrays trước với lệnh sau:
import java.util.Arrays; |
Sau đó chúng ta sử dụng phương thức Arrays.equals để so sánh 2 mảng 1 chiều trong Java với cú pháp sau đây:
Arrays.equals(array1, array2)
Trong đó array1 và array2 là tên của 2 mảng 1 chiều cần so sánh.
Phương thức Arrays.equals sẽ trả về kết quả true nếu tất cả các phần tử với cùng vị trí của 2 mảng đều giống nhau, nói cách khác là hai mảng đã cho hoàn toàn giống nhau. Ngược lại, chỉ cần 1 phần tử tại một vị trí nào đó khác nhau thì Arrays.equals sẽ trả về kết quả false.
Ví dụ, chúng ta so sánh 2 mảng sau đây:
int[] a = {8, 7, 9}; |
Hai mảng trên do có tất cả các phần tử tại các vị trí đều giống nhau, nên được coi là hoàn toàn giống nhau, và kết quả true sẽ được trả về.
Một ví dụ khác khi chúng ta so sánh 2 mảng có các phần tử giống nhau, tuy nhiên thì vị trí phần tử lại khác nhau.
int[] a = {8, 7, 9}; |
Trong ví dụ này, mặc dù các phần tử của 2 mảng là giống nhau, nhưng các phần tử tại vị trí index tương ứng là khác nhau, nên 2 mảng sẽ được coi là khác nhau, và kết quả false sẽ được trả về.
Lưu ý, chúng ta cũng có thể sử dụng phương thức Arrays.equals để so sánh giữa 2 mảng có giá trị null, hoặc là giữa 2 mảng cùng tham chiếu đến một bản thế mảng như sau:
/*So sánh 2 biến mảng cùng tham chiếu đến một mảng*/ |
So sánh 2 mảng đa chiều trong Java | Arrays.deepEquals
Để so sánh 2 mảng 1 chiều trong Java, chúng ta dùng phương thức Arrays.equals. Tuy nhiên đối với các mảng đa chiều thì phương thức này sẽ không đưa ra kết quả chính xác. Ví dụ khi so sánh 2 mảng 2 chiều hoàn toàn giống nhau bằng Arrays.equals thì kết quả true sẽ không được trả về.
int[] a = {{5, 78}, {92,5}}; |
Bởi vậy, thay vì dùng Arrays.equals thì để so sánh 2 mảng đa chiều trong Java, chúng ta sẽ cần dùng đến phương thức Arrays.deepEquals().
Arrays.deepEquals là một phương thức thành viên trong class Arrays, có tác dụng kiểm tra tất cả các phần tử trong 2 mảng Java đa chiều có giống nhau hay không.
Để sử dụng được phương thức này thì chúng ta cần phải import class Arrays trước với lệnh sau:
import java.util.Arrays; |
Sau đó chúng ta sử dụng phương thức Arrays.deepEquals để so sánh 2 mảng đa chiều trong Java với cú pháp sau đây:
Arrays.deepEquals(array1, array2)
Về cách sử dụng của Arrays.deepEquals thì cũng tương tự như với Arrays.Equals mà Kiyoshi đã trình bày ở trên.
Ví dụ, chúng ta so sánh 2 mảng 2 chiều trong Java như sau:
import java.util.Arrays; |
So sánh các phần tử trong mảng Java
Ngoài việc so sánh 2 mảng có giống nhau hay không, chúng ta cũng có thể so sánh các phần tử trong mảng Java để tìm ra các phần tử giống nhau hoặc khác nhau giữa chúng.
Để làm được việc này, chúng ta đơn giản tạo ra một vòng lặp lồng, lấy từng phần tử trong mảng này để so sánh với toàn bộ phần tử trong mảng còn lại, và tìm ra phần tử giống hoặc khác nó.
Một ví dụ đơn giản, chúng ta so sánh các phần tử trong mảng Java và tìm ra phần tử giống nhau như sau:
class Main{ |
Kết quả thì các phần tử giống nhau giữa 2 mảng sẽ được in ra màn hình như sau:
8 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn các cách so sánh mảng trong Java rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về Java trong các bài học tiếp theo.
URL Link
HOME › java cơ bản cho người mới bắt đầu>>12. mảng trong java