Chắc hẳn đây là một công việc khá phổ biến khi làm việc với hầu hết các ngôn ngữ lập trình không chỉ riêng Java. Tuy nhiên đối với những người vừa bắt đầu học có vẽ khá lúng túng và thường sẽ code rất nhiều cho tính năng đơn giản này. Tuy nhiên Java nói “SAY NO” trong Java hỗ trợ rất nhiều cách để chúng ta có thể xoá các phần tử trùng lặp cách nhanh chóng. Chúng ta cùng xem nhé.
Sử dụng Set
Cách này khá đơn giảm, Set là một Interface mô mà các implemnt của nó không cho phép một phần tử xuất hiện quá 2 lần. Chúng ta có chuyển các phần tử từ List sang Set để nó xoá các phần tử trùng lặp, sau đó lại chuyển từ HashSet sang List.
List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); List<Integer> listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates));
Dictinct Java Stream
Cách trên khá đơn giản, nhưng lại trong khá củ chuối. Cho nên Stream đã cung cấp dictinct() method giúp loại bỏ các phần tử trùng nhau cách nhanh chóng.
List<Integer> listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); List<Integer> listWithoutDuplicates = listWithDuplicates.stream() .distinct() .collect(Collectors.toList())
Tóm lược
Như vậy để xoá các phần tử trùng nhau trong Java trở nên khá đơn giản với Stream API, với distinct() method, cú pháp tường giúp tăng tính đọc hiểu code, hơn nữa còn giảm thiểu code đáng kể nữa. Tội gì mà không dùng distinct() phải không các bạn.