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

ความแตกต่างระหว่าง TreeSet และ HashSet ใน Java

ทั้ง HashSet และ TreeSet เป็นส่วนหนึ่งของ Collection Framework HashSet เป็นการนำ Set interface ไปใช้งาน ส่วน TreeSet implements SortedSet TreeSet ใช้ TreeMap เป็นโครงสร้างข้อมูลหลัง (backed by TreeMap) ในขณะที่ HashSet ใช้ HashMap

ตารางเปรียบเทียบรายละเอียด

ลำดับ หัวข้อ HashSet TreeSet
1 การนำไปใช้ ใช้ HashTable (HashMap) เป็นโครงสร้างหลัง ใช้โครงสร้างต้นไม้ (Tree structure/Red-Black Tree)
2 Null Object รองรับ null object ได้ ไม่รองรับ null object โยน NullPointerException
3 เมธอดเปรียบเทียบ ใช้เมธอด equals() เพื่อเปรียบเทียบอ็อบเจ็กต์ ใช้เมธอด compare() (หรือ compareTo) เพื่อเปรียบเทียบ
4 Heterogeneous Objects ไม่รองรับ heterogeneous objects (ชนิดข้อมูลต่างกันในเซตเดียวกัน) รองรับ heterogeneous objects ได้ (ถ้าเปรียบเทียบได้)
5 ลำดับการจัดเก็บ ไม่รักษาลำดับใดๆ (no ordering) รักษาอ็อบเจ็กต์ในลำดับที่จัดเรียงแล้ว (sorted order)

ตัวอย่าง TreeSet

TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Good");
treeSet.add("For");
treeSet.add("Health");
treeSet.add("Good"); // Duplicate

for (String temp : treeSet) {
    System.out.println(temp);
}

ผลลัพธ์

For
Good
Health

ตัวอย่าง HashSet

HashSet<String> hashSet = new HashSet<>();
hashSet.add("Good");
hashSet.add("For");
hashSet.add("Health");
hashSet.add("Good"); // Duplicate

for (String temp : hashSet) {
    System.out.println(temp);
}

ผลลัพธ์

Health
For
Good

สรุป

HashSet ให้ประสิทธิภาพ O(1) สำหรับ add, remove, contains แต่ไม่จัดเรียง TreeSet ให้ประสิทธิภาพ O(log n) แต่จัดเก็บข้อมูลเรียงลำดับแล้ว เลือก HashSet เมื่อไม่ต้องการลำดับ เลือก TreeSet เมื่อต้องการข้อมูลเรียงลำดับเสมอ