SequencedMap<K, V> — 양끝 연산과 역방향 순회를 지원하는 순서 있는 맵
SequencedMap<K, V> — 양끝 연산과 역방향 순회를 지원하는 순서 있는 맵
잘 정의된 마주침 순서(encounter order) 를 가지면서도 양쪽 끝에서 연산을 지원하고 역방향으로 뒤집을 수 있는 맵(Map)을 나타내는 인터페이스예요. 순차 컬렉션과 달리 요소가 아닌 매핑(mapping) 을 기준으로 순서가 적용돼요. Java 21에서 도입됐어요.
본문
public interface SequencedMap<K, V> extends Map<K, V>
SequencedMap의 마주침 순서는 SequencedCollection의 요소 순서와 유사하지만, 순서가 개별 요소가 아닌 매핑에 적용돼요. forEach와 replaceAll을 포함한 대량 연산은 이 맵의 매핑을 마주침 순서대로 처리해요.
keySet, values, entrySet, sequencedKeySet, sequencedValues, sequencedEntrySet 메서드가 제공하는 뷰 컬렉션은 모두 이 맵의 마주침 순서를 반영해요.
reversed() 메서드
SequencedMap<K, V> reversed()
이 맵의 역방향 순서 뷰를 반환해요. 역방향 뷰에서는 첫 번째와 마지막 매핑의 개념이 뒤바뀌어요. 예를 들어 다음 코드는 매핑을 마지막 매핑부터 첫 번째 매핑까지 역순으로 제공해요:
var itr = sequencedMap.reversed().entrySet().iterator();
양끝 매핑 메서드
firstEntry()— 이 맵의 첫 번째 키-값 매핑을 반환하거나, 맵이 비어 있으면null을 반환해요.lastEntry()— 이 맵의 마지막 키-값 매핑을 반환하거나, 맵이 비어 있으면null을 반환해요.pollFirstEntry()— 이 맵의 첫 번째 키-값 매핑을 제거하고 반환하거나, 맵이 비어 있으면null을 반환해요 (선택 연산).pollLastEntry()— 이 맵의 마지막 키-값 매핑을 제거하고 반환하거나, 맵이 비어 있으면null을 반환해요 (선택 연산).putFirst(K k, V v)— 매핑이 없으면 주어진 매핑을 삽입하고, 이미 있으면 기존 매핑의 값을 교체해요.putLast(K k, V v)— 매핑이 없으면 주어진 매핑을 삽입하고, 이미 있으면 기존 매핑의 값을 교체해요.
firstEntry, lastEntry, pollFirstEntry, pollLastEntry가 반환하는 Map.Entry 인스턴스는 호출 시점의 매핑 스냅샷을 나타내므로, 선택적 setValue 메서드를 통한 기본 맵 변경은 지원하지 않아요.
이 인터페이스는 Java Collections Framework의 한 구성원이에요.
- 도입 시점(Since): 21