Java : AbstractCollection with Examples

AbstractCollection (Java SE 23 & JDK 23) in Java with Examples.
You will find code samples for most of the AbstractCollection<E> methods.


Summary

This class provides a skeletal implementation of the Collection interface, to minimize the effort required to implement this interface.

Class diagram

class MyCollection extends AbstractCollection<String> {
    private final String[] values;

    MyCollection(String[] values) {
        this.values = Objects.requireNonNull(values);
    }

    @Override
    public Iterator<String> iterator() {
        return new Iterator<>() {
            private int index;

            @Override
            public boolean hasNext() {
                return values.length != index;
            }

            @Override
            public String next() {
                final var value = values[index];
                index++;
                return value;
            }
        };
    }

    @Override
    public int size() {
        return values.length;
    }
}

final var collection = new MyCollection(new String[]{"aaa", "bbb", "ccc"});

System.out.println(collection); // [aaa, bbb, ccc]
System.out.println(collection.size()); // 3
System.out.println(collection.isEmpty()); // false

System.out.println("-- values --");
for (final var value : collection) {
    System.out.println(value);
}

// Result
// ↓
//-- values --
//aaa
//bbb
//ccc

Constructors

AbstractCollection ()

Sole constructor.

class MyCollection extends AbstractCollection<String> {
    private final String[] values;

    MyCollection(String[] values) {
        this.values = Objects.requireNonNull(values);
    }

    @Override
    public Iterator<String> iterator() {
        return new Iterator<>() {
            private int index;

            @Override
            public boolean hasNext() {
                return values.length != index;
            }

            @Override
            public String next() {
                final var value = values[index];
                index++;
                return value;
            }
        };
    }

    @Override
    public int size() {
        return values.length;
    }
}

final var collection = new MyCollection(new String[]{"aaa", "bbb", "ccc"});

System.out.println(collection); // [aaa, bbb, ccc]
System.out.println(collection.size()); // 3
System.out.println(collection.isEmpty()); // false

System.out.println("-- values --");
for (final var value : collection) {
    System.out.println(value);
}

// Result
// ↓
//-- values --
//aaa
//bbb
//ccc

Methods

boolean add (E e)

Ensures that this collection contains the specified element (optional operation).

final AbstractCollection<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 AbstractCollection<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)

Adds all of the elements in the specified collection to this collection (optional operation).

final AbstractCollection<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 AbstractCollection<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 ()

Removes all of the elements from this collection (optional operation).

final AbstractCollection<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)

Returns true if this collection contains the specified element.

final AbstractCollection<String> collection = new ArrayList<>();
Collections.addAll(collection, "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)

Returns true if this collection contains all of the elements in the specified collection.

final AbstractCollection<String> collection = new ArrayList<>();
Collections.addAll(collection, "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 isEmpty ()

Returns true if this collection contains no elements.

final AbstractCollection<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

abstract Iterator<E> iterator ()

Returns an iterator over the elements contained in this collection.

final AbstractCollection<String> collection = new ArrayList<>();
Collections.addAll(collection, "aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]

final var iterator = collection.iterator();
iterator.forEachRemaining(System.out::println);

// Result
// ↓
//aaa
//bbb
//ccc

boolean remove (Object o)

Removes a single instance of the specified element from this collection, if it is present (optional operation).

final AbstractCollection<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)

Removes all of this collection's elements that are also contained in the specified collection (optional operation).

final var src = List.of("aaa", "bbb", "ccc");

{
    final AbstractCollection<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 AbstractCollection<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 AbstractCollection<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); // []
}

boolean retainAll (Collection<?> c)

Retains only the elements in this collection that are contained in the specified collection (optional operation).

final var src = List.of("aaa", "bbb", "ccc");

{
    final AbstractCollection<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 AbstractCollection<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 AbstractCollection<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]
}

Object[] toArray ()

Returns an array containing all of the elements in this collection.

final AbstractCollection<String> collection = new ArrayList<>();
Collections.addAll(collection, "aaa", "bbb", "ccc");
System.out.println(collection); // [aaa, bbb, ccc]

final Object[] ret = collection.toArray();
System.out.println(Arrays.toString(ret)); // [aaa, bbb, ccc]

<T> T[] toArray (T[] a)

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array.

final AbstractCollection<String> collection = new ArrayList<>();
Collections.addAll(collection, "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]
}

String toString ()

Returns a string representation of this collection.

final AbstractCollection<String> collection = new ArrayList<>();

final var str1 = collection.toString();
System.out.println(str1); // []

collection.add("aaa");

final var str2 = collection.toString();
System.out.println(str2); // [aaa]

collection.add("bbb");
collection.add("ccc");

final var str3 = collection.toString();
System.out.println(str3); // [aaa, bbb, ccc]

Methods declared in Collection

equals, hashCode, parallelStream, removeIf, size, spliterator, stream, toArray

Please see the link below.

Methods declared in Iterable

forEach

Please see the link below.


Related posts

To top of page