Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

นำ Custom HashSet ไปใช้ใน Java

HashSet นำ Set interface ไปใช้ ไม่อนุญาตค่าซ้ำ ไม่ซิงโครไนซ์ ไม่ thread-safe เมธอด add() คืน false หากค่าซ้ำ

ไวยากรณ์คลาส

public class HashSet<E> extends AbstractSet<E> 
    implements Set<E>, Cloneable, Serializable

ตัวอย่าง: Custom HashSet Implementation


import java.util.*;

public class CustomHashSetTest extends AbstractSet<String> {
    private Map<String, Object> map = new HashMap<>();
    private static final Object PRESENT = new Object();
    
    @Override
    public Iterator<String> iterator() {
        return map.keySet().iterator();
    }
    
    @Override
    public int size() {
        return map.size();
    }
    
    @Override
    public boolean add(String e) {
        return map.put(e, PRESENT) == null;
    }
    
    public static void main(String[] args) {
        CustomHashSetTest set = new CustomHashSetTest();
        set.add("England");
        set.add("Australia");
        set.add("India");
        set.add("Australia"); // Duplicate - will be ignored
        
        for (String s : set) {
            System.out.println(s);
        }
    }
}

ผลลัพธ์

England
Australia
India

หลักการ: ใช้ HashMap ภายใน key = element, value = dummy object (PRESENT) add() คืน true ถ้า key ใหม่ false ถ้ามีอยู่แล้ว