Java SequencedMap: first/last entry โดยไม่ต้องไล่ iterator เอง
น้องกายEngineering
อยากรู้คีย์แรก/ท้ายของแมปที่รักษาลำดับ อย่าไล่ entrySet().iterator() เองทุกครั้งครับ ใช้ SequencedMap
ตามAPI อินเทอร์เฟซนี้มี firstEntry, lastEntry, putFirst, putLast, reversed — LinkedHashMap implement ให้แล้ว
import java.util.LinkedHashMap;
import java.util.SequencedMap;
public class Main {
public static void main(String[] args) {
SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 1);
map.putLast("b", 2);
map.putFirst("z", 0);
assert map.firstEntry().getKey().equals("z");
assert map.lastEntry().getKey().equals("b");
assert map.reversed().firstEntry().getKey().equals("b");
System.out.println("SequencedMap tests passed");
}
}
เหมาะกับ LRU มือ / คิวสถานะที่ต้องรู้หัว-ท้ายเร็ว — HashMap ธรรมดาไม่ใช่ SequencedMap
Recap
- เลือก
LinkedHashMapเมื่อต้องการลำดับชัด - ใช้
firstEntry/lastEntryแทน iterator มือ - อ่านเอกสาร SequencedMap
- อย่าสมมติว่า
HashMapมีลำดับ