นากกายจัดบัตรคีย์-ค่าเป็นแถวบนโต๊ะมิ้นต์ ชี้ใบแรกและใบท้าย

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 มีลำดับ