คำตอบสั้น ๆ
TreeMapการใช้งาน นี่คือสิ่งที่มันต้องการ
หากแผนที่นี้ผ่านให้คุณและคุณไม่สามารถระบุประเภทได้คุณสามารถทำสิ่งต่อไปนี้:
SortedSet<String> keys = new TreeSet<>(map.keySet());
for (String key : keys) {
String value = map.get(key);
// do something
}
สิ่งนี้จะวนซ้ำทั่วทั้งแผนที่ตามลำดับคีย์
คำตอบอีกต่อไป
เทคนิคคุณสามารถใช้สิ่งที่ดำเนินการSortedMapแต่ยกเว้นกรณีที่หายากจำนวนนี้TreeMapเช่นเดียวกับที่ใช้ดำเนินการมักจะมีจำนวน MapHashMap
สำหรับกรณีที่คีย์ของคุณเป็นประเภทที่ซับซ้อนที่ไม่ได้ใช้การเปรียบเทียบหรือคุณไม่ต้องการที่จะใช้คำสั่งที่เป็นธรรมชาติแล้วTreeMapและTreeSetมีตัวสร้างเพิ่มเติมที่ช่วยให้คุณผ่านในComparator:
// placed inline for the demonstration, but doesn't have to be a lambda expression
Comparator<Foo> comparator = (Foo o1, Foo o2) -> {
...
}
SortedSet<Foo> keys = new TreeSet<>(comparator);
keys.addAll(map.keySet());
จำได้ว่าเมื่อใช้TreeMapหรือTreeSetว่ามันจะมีลักษณะการทำงานที่แตกต่างกันกว่าหรือHashMap HashSetพูดประมาณว่าการดำเนินงานพบหรือใส่องค์ประกอบจะไปจากO (1)เพื่อO (เข้าสู่ระบบ (N))
ใน a การHashMapย้ายจาก 1,000 รายการไปยัง 10,000 ไม่ได้ส่งผลกระทบต่อเวลาของคุณในการค้นหาองค์ประกอบ แต่สำหรับTreeMapการค้นหาจะช้าลงประมาณ 3 เท่า (สมมติว่า Log 2 ) การย้ายจาก 1,000 เป็น 100,000 จะช้าลงประมาณ 6 เท่าสำหรับการค้นหาองค์ประกอบทั้งหมด