Mục lục
Trong bài viết chúng ta sẽ cùng nhau tìm hiểu cách convert List sang Set và ngược lại trong Java thông qua một số cách thông dụng như sử dụng Java thuần, sử dụng các thư viện bên thứ ba như Apache Commons Collections và với Java 10.
Convert List sang Set
Sử dụng Java thuần
Đầu tiê, chúng ta hoàn toàn có thể sử dụng Java thuần để convert List sang Set một cách hiệu quả
public void convertListToSet() { List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); Set<Integer> targetSet = new HashSet<>(sourceList); }
HashSet một implementation của Set interface cho cung cấp constructor cho phép khởi tạo thông qua một List object.
Sử dụng Guava
Guava cũng là một thư viện phổ biến cung cấp rất nhiều utils class, method. Chúng ta có thể sử dụng Sets class từ thư viện này để convert List sang Set một cách dễ dàng.
public void convertListToSet() { List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set<Integer> targetSet = Sets.newHashSet(sourceList); }
Sử dụng Apache Commons Collections
Với Apache Commons Collections chúng ta có thể sử dụng CollectionUtils class để convert List sang Set.
public void convertListToSet() { List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set<Integer> targetSet = new HashSet<>(6); CollectionUtils.addAll(targetSet, sourceList); }
Sử dụng Java 10
Từ phiên bản Java 10 chúng ta có thể sử dụng Set.copyOf() để convert List sang Set.
public void convertListToSet() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Set.copyOf(sourceList); }
Lưu ý rằng Set object được tạo ra bởi method này không thể chỉnh sửa, nếu có bất kỳ hành động nào liên quan đến việc thêm, sửa, xóa, cập nhật các phần tử trong Set sẽ gây ra exception.
Convert Set sang List
Để convert ngược lại từ Set sang List, chúng ta có các cách tương ứng với cách convert List sang Set.
Sử dụng Java thuần
public void convertSetToList() { Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List<Integer> targetList = new ArrayList<>(sourceSet); }
Sử dụng Guava
Ngược lại, chúng ta có thể sử dụng Lists.newArrayList() để convert Set sang List.
ublic void convertSetToList() { Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List<Integer> targetList = Lists.newArrayList(sourceSet); }
Apache Commons Collections
CollectionUtils có thể hoạt động tương tự như cả trên List và Set, chúng ta đều cần sử dụng CollectionUtils.addAll() method.
public void convertSetToList() { Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List<Integer> targetList = new ArrayList<>(6); CollectionUtils.addAll(targetList, sourceSet); }
Sử dụng Java 10
Tương tự, trong Java 10 List interface cũng cung cấp List.copyOf() method dùng để convert Set sang List.
public void convertSetToList() { Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List<Integer> targetList = List.copyOf(sourceSet); }
Các bạn vẫn cần lưu ý rằng List object được convert sang vẫn không thể chỉnh sửa được nếu không sẽ gây ra exception.
Tóm lược
Qua bài viết ngắn trên các bạn đã biết thêm một số cách để convert List sang Set và ngược lại, hãy lựa chọn một cách phù hợp với project và sử dụng khi có nhu cầu.