Java : Collection (コレクション) - API使用例
Collection (Java SE 19 & JDK 19) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
コレクション階層のルート・インタフェースです。 コレクションは、その要素であるオブジェクトのグループを表します。
Collection は、List や Set といったコレクション・フレームワークの基本となるインタフェースです。
要素を追加する add や、要素を削除する remove など、基本的な操作が定義されています。
Collection そのものを直接使うことは少なく、List や Set として使うことが多いと思います。
final Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
System.out.println(collection); // [aaa, bbb, ccc]
collection.remove("bbb");
System.out.println(collection); // [aaa, ccc]
final Collection<Integer> collection = Set.of(111, 222, 333);
System.out.println(collection); // [222, 111, 333]
System.out.println(collection.size()); // 3
メソッド
boolean add (E e)
指定された要素がこのコレクションに格納されていることを保証します(オプションの操作)。
final Collection<String> collection = new ArrayList<>();
System.out.println(collection.add("aaa")); // true
System.out.println(collection.add("bbb")); // true
System.out.println(collection.add("bbb")); // true
System.out.println(collection); // [aaa, bbb, bbb]
final Collection<String> collection = new HashSet<>();
System.out.println(collection.add("aaa")); // true
System.out.println(collection.add("bbb")); // true
System.out.println(collection.add("bbb")); // false
System.out.println(collection); // [aaa, bbb]
boolean addAll (Collection<? extends E> c)
指定されたコレクションのすべての要素をこのコレクションに追加します(オプションの操作)。
final Collection<String> collection = new ArrayList<>();
final var list1 = List.of("aaa", "bbb");
final var list2 = List.of("bbb", "ccc");
final var list3 = List.of("ccc");
System.out.println(collection.addAll(list1)); // true
System.out.println(collection); // [aaa, bbb]
System.out.println(collection.addAll(list2)); // true
System.out.println(collection); // [aaa, bbb, bbb, ccc]
System.out.println(collection.addAll(list3)); // true
System.out.println(collection); // [aaa, bbb, bbb, ccc, ccc]
final Collection<String> collection = new HashSet<>();
final var set1 = Set.of("aaa", "bbb");
final var set2 = Set.of("bbb", "ccc");
final var set3 = Set.of("ccc");
System.out.println(collection.addAll(set1)); // true
System.out.println(collection); // [aaa, bbb]
System.out.println(collection.addAll(set2)); // true
System.out.println(collection); // [aaa, ccc, bbb]
System.out.println(collection.addAll(set3)); // false
System.out.println(collection); // [aaa, ccc, bbb]
void clear ()
このコレクションからすべての要素を削除します(オプションの操作)。
final Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
System.out.println(collection); // [aaa, bbb, ccc]
collection.clear();
System.out.println(collection); // []
System.out.println(collection.isEmpty()); // true
boolean contains (Object o)
指定された要素がコレクションに含まれている場合にtrueを返します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
System.out.println(collection.contains("aaa")); // true
System.out.println(collection.contains("bbb")); // true
System.out.println(collection.contains("XXX")); // false
boolean containsAll (Collection<?> c)
指定されたコレクションのすべての要素がこのコレクション内にある場合はtrueを返します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var list1 = List.of("aaa", "bbb");
System.out.println(collection.containsAll(list1)); // true
final var list2 = List.of("bbb", "XXX");
System.out.println(collection.containsAll(list2)); // false
final var list3 = List.of("XXX", "YYY");
System.out.println(collection.containsAll(list3)); // false
boolean equals (Object o)
指定されたオブジェクトとこのコレクションが等しいかどうかを比較します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var list1 = List.of("aaa", "bbb");
System.out.println(collection.equals(list1)); // false
final var list2 = List.of("aaa", "bbb", "ccc");
System.out.println(collection.equals(list2)); // true
final var list3 = List.of("XXX", "YYY");
System.out.println(collection.equals(list3)); // false
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var set = Set.of("aaa", "bbb", "ccc");
System.out.println(collection.equals(set)); // false
int hashCode ()
コレクションのハッシュ・コード値を返します。
final Collection<String> collection1 = List.of("aaa", "bbb", "ccc");
System.out.println(collection1.hashCode()); // 95709313
final Collection<Integer> collection2 = Set.of(111, 222, 333);
System.out.println(collection2.hashCode()); // 666
boolean isEmpty ()
このコレクションに要素がない場合にtrueを返します。
このメソッドの使用例は、size() にまとめて記載しました。
そちらのAPI使用例をご参照ください。
Iterator<E> iterator ()
コレクションの要素のイテレータを返します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var iterator = collection.iterator();
iterator.forEachRemaining(System.out::println);
// 結果
// ↓
//aaa
//bbb
//ccc
default Stream<E> parallelStream ()
このコレクションをソースとして、潜在的に並列のStreamを返します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var stream = collection.parallelStream();
System.out.println(stream.isParallel()); // true
stream.forEach(s -> {
final var id = Thread.currentThread().getId();
System.out.println("thread id = " + id + " : " + s);
});
// 結果
// ↓
//thread id = 20 : ccc
//thread id = 19 : aaa
//thread id = 1 : bbb
boolean remove (Object o)
指定された要素のインスタンスがこのコレクションにあれば、そのインスタンスをコレクションから1つ削除します(オプションの操作)。
final Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
System.out.println(collection); // [aaa, bbb, ccc]
System.out.println(collection.remove("aaa")); // true
System.out.println(collection); // [bbb, ccc]
System.out.println(collection.remove("bbb")); // true
System.out.println(collection); // [ccc]
System.out.println(collection.remove("XXX")); // false
System.out.println(collection); // [ccc]
boolean removeAll (Collection<?> c)
指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します(オプションの操作)。
final var src = List.of("aaa", "bbb", "ccc");
{
final Collection<String> collection = new ArrayList<>(src);
System.out.println(collection); // [aaa, bbb, ccc]
final var list = List.of("aaa", "bbb");
System.out.println(collection.removeAll(list)); // true
System.out.println(collection); // [ccc]
}
{
final Collection<String> collection = new ArrayList<>(src);
System.out.println(collection); // [aaa, bbb, ccc]
final var list = List.of("XXX", "YYY");
System.out.println(collection.removeAll(list)); // false
System.out.println(collection); // [aaa, bbb, ccc]
}
{
final Collection<String> collection = new ArrayList<>(src);
System.out.println(collection); // [aaa, bbb, ccc]
final var list = List.of("aaa", "bbb", "ccc", "XXX");
System.out.println(collection.removeAll(list)); // true
System.out.println(collection); // []
}
default boolean removeIf (Predicate<? super E> filter)
指定された述語を満たすこのコレクションの要素をすべて削除します。
final Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("BBB");
collection.add("ccc");
collection.add("DDD");
System.out.println(collection); // [aaa, BBB, ccc, DDD]
final var ret = collection.removeIf(s -> {
// 大文字であるかチェックします。
return s.equals(s.toUpperCase());
});
System.out.println(ret); // true
System.out.println(collection); // [aaa, ccc]
final Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("bbb");
System.out.println(collection); // [aaa, bbb]
final var ret = collection.removeIf(s -> s.equals(s.toUpperCase()));
System.out.println(ret); // false
System.out.println(collection); // [aaa, bbb]
boolean retainAll (Collection<?> c)
このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します(オプションの操作)。
final var src = List.of("aaa", "bbb", "ccc");
{
final Collection<String> collection = new ArrayList<>(src);
System.out.println(collection); // [aaa, bbb, ccc]
final var list = List.of("aaa", "bbb");
System.out.println(collection.retainAll(list)); // true
System.out.println(collection); // [aaa, bbb]
}
{
final Collection<String> collection = new ArrayList<>(src);
System.out.println(collection); // [aaa, bbb, ccc]
final var list = List.of("XXX", "YYY");
System.out.println(collection.retainAll(list)); // true
System.out.println(collection); // []
}
{
final Collection<String> collection = new ArrayList<>(src);
System.out.println(collection); // [aaa, bbb, ccc]
final var list = List.of("aaa", "bbb", "ccc", "XXX");
System.out.println(collection.retainAll(list)); // false
System.out.println(collection); // [aaa, bbb, ccc]
}
int size ()
このコレクション中の要素の数を返します。
final Collection<String> collection = new ArrayList<>();
System.out.println(collection); // []
System.out.println(collection.size()); // 0
System.out.println(collection.isEmpty()); // true
collection.add("aaa");
System.out.println(collection); // [aaa]
System.out.println(collection.size()); // 1
System.out.println(collection.isEmpty()); // false
collection.add("bbb");
System.out.println(collection); // [aaa, bbb]
System.out.println(collection.size()); // 2
System.out.println(collection.isEmpty()); // false
default Spliterator<E> spliterator ()
このコレクション内の要素に対するSpliteratorを作成します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var spliterator = collection.spliterator();
spliterator.forEachRemaining(System.out::println);
// 結果
// ↓
//aaa
//bbb
//ccc
default Stream<E> stream ()
このコレクションをソースとして使用して、逐次的なStreamを返します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final var stream = collection.stream();
System.out.println(stream.isParallel()); // false
stream.forEach(System.out::println);
// 結果
// ↓
//aaa
//bbb
//ccc
Object[] toArray ()
このコレクションの要素がすべて格納されている配列を返します。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final Object[] ret = collection.toArray();
System.out.println(Arrays.toString(ret)); // [aaa, bbb, ccc]
default <T> T[] toArray (IntFunction<T[]> generator)
指定されたgenerator関数を使用してこのコレクションのすべての要素を含む配列を返し、返された配列を割り当てます。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
final String[] ret = collection.toArray(String[]::new);
System.out.println(Arrays.toString(ret)); // [aaa, bbb, ccc]
<T> T[] toArray (T[] a)
このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。
final Collection<String> collection = List.of("aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]
{
final String[] ret = collection.toArray(new String[0]);
System.out.println(Arrays.toString(ret)); // [aaa, bbb, ccc]
}
{
final String[] array = new String[collection.size()];
System.out.println(Arrays.toString(array)); // [null, null, null]
final var ret = collection.toArray(array);
System.out.println(Arrays.toString(ret)); // [aaa, bbb, ccc]
System.out.println(Arrays.toString(array)); // [aaa, bbb, ccc]
}
Iterableで宣言されたメソッド
forEach
「Java API 使用例 : Iterable」をご参照ください。
関連記事
- API 使用例
- AbstractCollection
- Collections (コレクション操作)
- List (リスト)
- Map (マップ)
- Map.Entry (キーと値のペア)
- Queue (キュー)
- AbstractQueue
- ArrayBlockingQueue (ブロッキング・配列キュー)
- ArrayDeque (両端キュー)
- BlockingDeque (ブロッキング・両端キュー)
- BlockingQueue (ブロッキング・キュー)
- ConcurrentLinkedDeque (並列処理用・両端キュー)
- ConcurrentLinkedQueue (並列処理用キュー)
- Deque (両端キュー)
- LinkedBlockingDeque (ブロッキング・リンク両端キュー)
- LinkedBlockingQueue (ブロッキング・リンクキュー)
- LinkedList (二重リンク・リスト)
- PriorityBlockingQueue (ブロッキング・優先度付きキュー)
- PriorityQueue (優先度付きキュー)
- Set (セット)
- Iterable
- Iterator
- Spliterator