Convert List to Set và ngược lại trong Java

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.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x