เหตุผลที่ใช้กันมากที่สุดHashSetคือการใช้งานคือ (โดยเฉลี่ย) O (1) แทนที่จะเป็น O (log n) หากชุดประกอบด้วยรายการมาตรฐานคุณจะไม่ "ยุ่งกับฟังก์ชันแฮช" ตามที่ได้ทำเพื่อคุณ หากตั้งมีชั้นเรียนที่กำหนดเองคุณต้องใช้hashCodeการใช้งานHashSet(ถึงแม้จะแสดงให้เห็นว่ามีผลบังคับใช้ Java วิธี) แต่ถ้าคุณใช้TreeSetคุณจะต้องทำมันหรืออุปทานComparable Comparatorนี่อาจเป็นปัญหาหากคลาสไม่มีคำสั่งซื้อเฉพาะ
บางครั้งฉันเคยใช้TreeSet(หรือจริง ๆTreeMap) สำหรับชุด / แผนที่ขนาดเล็กมาก (<10 รายการ) แม้ว่าฉันจะไม่ได้ตรวจสอบเพื่อดูว่ามีผลประโยชน์จริงในการทำเช่นนั้นหรือไม่ สำหรับชุดใหญ่ความแตกต่างอาจมีความสำคัญ
ตอนนี้ถ้าคุณต้องการเรียงแล้วก็TreeSetมีความเหมาะสมแม้ว่าถึงแม้จะมีการปรับปรุงบ่อยครั้งและความต้องการผลลัพธ์เรียงไม่บ่อยนักบางครั้งการคัดลอกเนื้อหาไปยังรายการหรืออาร์เรย์และเรียงลำดับได้เร็วขึ้น