LinkedHashSet trong java – Duy nhất và có thứ tự

Nếu như bạn cần lưu trữ các phần tử duy nhất trong java thì bạn sẽ nghĩ ngay đến HashSet. Nhưng nếu bạn cần các phần tử vừa duy nhất vừa giữ được thứ tự khi được thêm vào thì LinkedHashSet là một lựa chọn tuyệt vời.

Mình còn nhớ trước đây team mình có một bạn viết unit test mà chạy lúc nó passed lúc nó fail =). Review lại thì là do bạn đó sẽ dụng HashSet mà cứ lấy phần tử đầu tiên để assert và như vậy phần tử đầu tiên là random không giống như thứ tự ban đầu bạn ấy thêm vào nên mới dẫn đến tình trạng này. Sau đó team quyết định chuyển sao ArrayList.

Để khởi tạo một LinkedHashSet String có thể viết như sau

LinkedHashSet<String> hs = new LinkedHashSet<String>();=

Constructor LinkedHashSet

  1. LinkedHashSet(): Constructor mặc định của LinkedHashSet.
  2. LinkedHashSet(Collection C): Khởi tại LinkedHashSet với các phần tử có sẵn trong Collection C.
  3. LinkedHashSet(int size):Khởi tạo LinkedHashSet với kích thước size cụ thể.
  4. LinkedHashSet(int capacity, float fillRatio): Khởi tạo LinkedHashSet với size và fillRatio cụ thể.
public class Demo  
{   
    public static void main(String[] args)  
    {   
        LinkedHashSet<String> linkedset =  
                           new LinkedHashSet<String>();   
  
        // Adding element to LinkedHashSet   
        linkedset.add("A");   
        linkedset.add("B");   
        linkedset.add("C");   
        linkedset.add("D");  
  
        // This will not add new element as A already exists  
        linkedset.add("A");  
        linkedset.add("E");   
  
        System.out.println("Size of LinkedHashSet = " + 
                                    linkedset.size());   
        System.out.println("Original LinkedHashSet:" + linkedset);   
        System.out.println("Removing D from LinkedHashSet: " + 
                            linkedset.remove("D"));   
        System.out.println("Trying to Remove Z which is not "+ 
                            "present: " + linkedset.remove("Z"));   
        System.out.println("Checking if A is present=" +  
                            linkedset.contains("A")); 
        System.out.println("Updated LinkedHashSet: " + linkedset);   
    }   
}

Các method trong LinkedHashSet

  1. public boolean add(E e) : Thêm một phần tử vào LinkedHashSet, nếu thành công trả về true, nếu phần tử đã tồn tại trong LinkedHashSet thì trả về false.
  2. public void clear() Xoá tất cả các phần tử trong LinkedHashSet.
  3. public boolean contains(Object o) : Trả về true nếu object O chứa trong LinkedHashSet, ngược lại false.
  4. public boolean isEmpty() :Trả về true nếu LinkedHashSet không chứa phần tử nào trong nó, ngược lại false.
  5. public int size() : Trả về số lượng phần tử của LinkedHashSet.
  6. public Iterator<E> iterator() : Sử dụng để duyệt LinkedHashSet.
  7. public boolean remove(Object o) : Xoá object o được chỉ định trong LinkedHashSet, nếu object o chứa trong LinkedHashSet nó sẽ được xoá ra khỏi LinkedHashSet và trả về true, ngược lại thì trả về false.
  8. public boolean removeAll(Collection<?> c) : Xoá tất cả các phần tử trong LinkedHashSet có mặt trong collection c.
  9. public Object clone() : Copy một bản LinkedHashSet từ một LinkedHashSet khác.

Leave a Comment

Your email address will not be published. Required fields are marked *