Bài viết đăng tại: https://laptrinhcanban.com
Hướng dẫn cách xoá phần tử trùng trong mảng Java. Bạn sẽ học được 2 cách căn bản để xoá phần tử trùng trong mảng Java sau bài học này.
Chúng ta có 2 cách xóa phần tử trùng trong mảng Java như sau:
- Xóa phần tử trùng trong mảng Java bằng LinkedHashSet
- Xóa phần tử trùng trong mảng Java bằng cách dịch chuyển nội bộ trong mảng
Có thể xóa phần tử trùng nhau trong mảng trong Java?
Giả sử chúng ta có mảng chứa các phần tử trùng nhau như sau:
int[] arr= {1, 2, 3, 1, 3, 2, 4}; |
Ở mảng này, các phần tử là 1, 2 và 3 là phần tử trùng nhau, và sau khi xoá phần tử trùng nhau, mảng kết quả sẽ là {1,2,3,4}.
Tuy nhiên khác với các ngôn ngữ lập trình khác thì mảng trong Java có kích thước cố định được quyết định khi khai báo mảng, và chúng ta không thể thay đổi kích thước của mảng sau khi khai báo.
Bởi vậy, chúng ta không thể xóa phần tử trong mảng Java, sau khi đã tạo nó. Điều chúng ta có thể làm, đó là dịch chuyển nội bộ các phần tử không trùng nhau về một phía của mảng và chỉ sử dụng các phần tử này, hoặc là chuyển mảng về một kiểu dữ liệu khác dễ xử lý xoá phần tử trùng nhau hơn mà thôi.
Xóa phần tử trùng trong mảng Java bằng LinkedHashSet
Cách đơn giản và dễ nhất để xóa phần tử trùng trong mảng Java đó chính là chuyển nó về một kiểu dữ liệu khác dễ xử lý xoá phần tử trùng nhau hơn, rồi sau đó mới chuyển lại kết quả về kiểu mảng.
Và kiểu dữ liệu tiều biểu ở đây chính là kiểu LinkedHashSet trong Java. Đây là kiểu dữ liệu chỉ cho phép chứa các phần tử duy nhất trong nó, do đó trong quá trình chuyển từ mảng sang LinkedHashSet thì các phần tử trùng nhau sẽ được tự động xoá đi và chỉ để lại các phần tử duy nhất mà thôi.
Cách xóa phần tử trùng trong mảng Java bằng LinkedHashSet như sau:
import java.util.*; |
Kết quả chương trình xóa phần tử trùng trong mảng Java:
[7, 2, 6, 4, 9, 8] |
Xóa phần tử trùng trong mảng Java bằng cách dịch chuyển nội bộ trong mảng
Trong trường hợp bạn chỉ muốn xử lý với mảng khi xóa phần tử trùng nhau, hãy sử dụng tới cách dịch chuyển phần tử nội bộ trong mảng dưới đây.
Trước hết, chúng ta cần phải sắp xếp mảng đã cho đã. Để sắp xếp mảng, chúng ta sẽ sử dụng tới phương thức Arrays.sort mà Kiyoshi đã hướng dẫn trong bài:
- Xem thêm: Sắp xếp mảng trong Java
Ý tưởng ở đây là, sau khi sắp xếp mảng, thì các phần tử trùng nhau (nếu có) sẽ được xếp nằm cạnh nhau, do đó chúng ta chỉ cần kiểm tra 2 phần tử trùng nhau xem chúng có bằng nhau hay không là có thể xác định được các phần tử trùng nhau trong mảng.
Khi tìm thấy các phần tử trùng nhau rồi, chúng ta sẽ lần lượt chuyển chúng về phía đầu mảng bằng cách ghi đè giá trị lên các phần tử ở đầu mảng. Và sau đó chỉ cần lấy toàn bộ các phần tử không còn trùng nhau đã được dịch chuyển về đầu mảng là chúng ta có thể hoàn thành việc xóa phần tử trùng trong mảng Java rồi.
Chúng ta viết hàm xóa phần tử trùng trong mảng Java trong chương trình bằng cách dịch chuyển nội bộ như sau:
import java.util.Arrays; |
Kết quả chương trình xóa phần tử trùng trong mảng Java:
2 4 6 7 8 9 |
Ở phần trên chúng ta đã di chuyển các phần tử không trùng nhau lên đầu mảng ban đầu. Nếu bạn muốn lấy riêng các phần tử trùng nhau ra, hãy viết thêm xử lý lấy các phần tử này và gán vào một mảng mới nhé.
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách xoá phần tử trùng trong mảng 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