Java : SequencedMap - API使用例
SequencedMap (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
検出順序が明確に定義され、両端での操作をサポートし、逆転可能なマップ。 SequencedMapの「見つける」は、SequencedCollectionの要素の「見つける」と似ていますが、順序付けは個々の要素ではなくマッピングに適用されます。
SequencedMap は順序を持ち、かつ、逆転可能な Map です。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
System.out.println(map.reversed()); // {c=30, b=20, a=10}
map.putFirst("X", 700);
map.putFirst("Y", 800);
map.putFirst("Z", 900);
System.out.println(map); // {Z=900, Y=800, X=700, a=10, b=20, c=30}
System.out.println(map.reversed()); // {c=30, b=20, a=10, X=700, Y=800, Z=900}
メソッド
default Map.Entry<K,V> firstEntry ()
このマップの最初のキーと値のマッピングを返します。マップが空の場合はnullを返します。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
System.out.println(map); // {}
System.out.println(map.firstEntry()); // null
map.putLast("a", 10);
System.out.println(map); // {a=10}
System.out.println(map.firstEntry()); // a=10
map.putLast("b", 20);
System.out.println(map); // {a=10, b=20}
System.out.println(map.firstEntry()); // a=10
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
System.out.println(map.firstEntry()); // a=10
default Map.Entry<K,V> lastEntry ()
このマップの最後のキーと値のマッピングを返します。マップが空の場合はnullを返します。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
System.out.println(map); // {}
System.out.println(map.lastEntry()); // null
map.putLast("a", 10);
System.out.println(map); // {a=10}
System.out.println(map.lastEntry()); // a=10
map.putLast("b", 20);
System.out.println(map); // {a=10, b=20}
System.out.println(map.lastEntry()); // b=20
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
System.out.println(map.lastEntry()); // c=30
default Map.Entry<K,V> pollFirstEntry ()
このマップの最初のキー値マッピングを削除して返します。マップが空の場合はnullを返します。 (オプションの操作)。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
System.out.println(map.pollFirstEntry()); // a=10
System.out.println(map); // {b=20, c=30}
System.out.println(map.pollFirstEntry()); // b=20
System.out.println(map); // {c=30}
System.out.println(map.pollFirstEntry()); // c=30
System.out.println(map); // {}
System.out.println(map.pollFirstEntry()); // null
default Map.Entry<K,V> pollLastEntry ()
このマップの最後のキー/値マッピングを削除して返します。マップが空の場合はnullを返します。 (オプションの操作)。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
System.out.println(map.pollLastEntry()); // c=30
System.out.println(map); // {a=10, b=20}
System.out.println(map.pollLastEntry()); // b=20
System.out.println(map); // {a=10}
System.out.println(map.pollLastEntry()); // a=10
System.out.println(map); // {}
System.out.println(map.pollLastEntry()); // null
default V putFirst (K k, V v)
指定されたマッピングがまだ存在しない場合はマップに挿入し、すでに存在する場合はマッピングの値を置換します (オプションの操作)。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putFirst("a", 10);
System.out.println(map); // {a=10}
map.putFirst("b", 20);
System.out.println(map); // {b=20, a=10}
map.putFirst("c", 30);
System.out.println(map); // {c=30, b=20, a=10}
default V putLast (K k, V v)
指定されたマッピングがまだ存在しない場合はマップに挿入し、すでに存在する場合はマッピングの値を置換します (オプションの操作)。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
System.out.println(map); // {a=10}
map.putLast("b", 20);
System.out.println(map); // {a=10, b=20}
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
SequencedMap<K,V> reversed ()
このマップの逆順viewを返します。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
final var reversedMap = map.reversed();
System.out.println(reversedMap); // {c=30, b=20, a=10}
System.out.println(reversedMap.reversed()); // {a=10, b=20, c=30}
default SequencedSet<Map.Entry<K,V>> sequencedEntrySet ()
このマップのentrySetのSequencedSetビューを返します。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
final var entries = map.sequencedEntrySet();
System.out.println(entries); // [a=10, b=20, c=30]
System.out.println(entries.reversed()); // [c=30, b=20, a=10]
default SequencedSet<K> sequencedKeySet ()
このマップのkeySetのSequencedSetビューを返します。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
final var keys = map.sequencedKeySet();
System.out.println(keys); // [a, b, c]
System.out.println(keys.reversed()); // [c, b, a]
default SequencedCollection<V> sequencedValues ()
このマップのvaluesコレクションのSequencedCollectionビューを返します。
final SequencedMap<String, Integer> map = new LinkedHashMap<>();
map.putLast("a", 10);
map.putLast("b", 20);
map.putLast("c", 30);
System.out.println(map); // {a=10, b=20, c=30}
final var values = map.sequencedValues();
System.out.println(values); // [10, 20, 30]
System.out.println(values.reversed()); // [30, 20, 10]
Mapで宣言されたメソッド
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
「Java API 使用例 : Map」をご参照ください。
関連記事
- List(リスト)の基本
- Map(マップ)の基本
- Set(セット)の基本
- List の初期化方法いろいろ
- Map の初期化方法いろいろ
- Set の初期化方法いろいろ
- 配列 vs. List
- 配列からListへの変換
- List から配列への変換
- API 使用例
- Collection (コレクション)
- Collections (コレクション操作)
- Comparable
- Comparator
- Iterator
- List (リスト)
- Map (マップ)
- Map.Entry (キーと値のペア)
- Queue (キュー)
- AbstractQueue
- ArrayBlockingQueue (ブロッキング・配列キュー)
- ArrayDeque (両端キュー)
- BlockingDeque (ブロッキング・両端キュー)
- BlockingQueue (ブロッキング・キュー)
- ConcurrentLinkedDeque (並列処理用・両端キュー)
- ConcurrentLinkedQueue (並列処理用キュー)
- Deque (両端キュー)
- LinkedBlockingDeque (ブロッキング・リンク両端キュー)
- LinkedBlockingQueue (ブロッキング・リンクキュー)
- LinkedList (二重リンク・リスト)
- PriorityBlockingQueue (ブロッキング・優先度付きキュー)
- PriorityQueue (優先度付きキュー)
- RandomAccess
- Set (セット)
- Spliterator