Java : AbstractList con ejemplos

AbstractList (Java SE 23 & JDK 23) en Java con ejemplos.
Encontrará muestras de código para la mayoría de los métodos AbstractList<E>.

Nota :


Summary

Esta clase proporciona una implementación básica de la interfaz List para minimizar el esfuerzo necesario para implementar esta interfaz respaldada por un almacén de datos de "acceso aleatorio" (como una matriz). Para datos de acceso secuencial (como una lista enlazada), se debe utilizar AbstractSequentialList en lugar de esta clase. (Traducción automática)

Class diagram

class MyList extends AbstractList<String> {
    private final String[] values;

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

    @Override
    public String get(int index) {
        return values[index];
    }

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

final var list = new MyList(new String[]{"aaa", "bbb", "ccc"});
System.out.println(list); // [aaa, bbb, ccc]
System.out.println(list.size()); // 3
System.out.println(list.isEmpty()); // false

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

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

Fields

protected int modCount

El número de veces que esta lista ha sido modificada estructuralmente. (Traducción automática)

class MyList extends AbstractList<String> {
    private final int MAX_SIZE = 5;
    private final String[] values = new String[MAX_SIZE];
    private int size;

    @Override
    public String get(int index) {
        return values[index];
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public boolean add(String s) {
        if (size == MAX_SIZE) {
            throw new IllegalStateException();
        }

        size++;
        modCount++;
        values[size - 1] = s;
        return true;
    }
}

final var list = new MyList();
list.add("aaa");
list.add("bbb");

{
    final var iterator = list.iterator();
    System.out.println("-- iterator --");
    iterator.forEachRemaining(s -> {
        System.out.println(s);
    });

    // Result
    // ↓
    //-- iterator --
    //aaa
    //bbb
}

{
    final var iterator = list.iterator();

    list.add("ccc");

    try {
        System.out.println("-- iterator --");
        iterator.forEachRemaining(s -> {
            System.out.println(s);
        });
    } catch (ConcurrentModificationException e) {
        System.out.println("ConcurrentModificationException!");
    }

    // Result
    // ↓
    //-- iterator --
    //ConcurrentModificationException!
}

Constructors

AbstractList ()

Constructor único. (Traducción automática)

class MyList extends AbstractList<String> {
    private final String[] values;

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

    @Override
    public String get(int index) {
        return values[index];
    }

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

final var list = new MyList(new String[]{"aaa", "bbb", "ccc"});
System.out.println(list); // [aaa, bbb, ccc]
System.out.println(list.size()); // 3
System.out.println(list.isEmpty()); // false

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

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

Methods

void add (int index, E element)

Inserta el elemento especificado en la posición especificada en esta lista (operación opcional). (Traducción automática)

final var src = List.of("a", "b", "c");
System.out.println(src); // [a, b, c]

{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    list.add(0, "A");
    System.out.println(list); // [A, a, b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    list.add(1, "B");
    System.out.println(list); // [a, B, b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    list.add(2, "C");
    System.out.println(list); // [a, b, C, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    list.add(3, "D");
    System.out.println(list); // [a, b, c, D]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    //list.add(4, "D"); // IndexOutOfBoundsException
}

boolean add (E e)

Añade el elemento especificado al final de esta lista (operación opcional). (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
System.out.println(list); // []

System.out.println(list.add("a")); // true
System.out.println(list); // [a]

System.out.println(list.add("b")); // true
System.out.println(list); // [a, b]

System.out.println(list.add("c")); // true
System.out.println(list); // [a, b, c]

boolean addAll (int index, Collection<? extends E> c)

Inserta todos los elementos de la colección especificada en esta lista en la posición especificada (operación opcional). (Traducción automática)

final var src = List.of("a", "b", "c");
System.out.println(src); // [a, b, c]

{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.addAll(0, List.of("A1", "A2"))); // true
    System.out.println(list); // [A1, A2, a, b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.addAll(1, List.of("B1", "B2", "B3"))); // true
    System.out.println(list); // [a, B1, B2, B3, b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.addAll(2, List.of("C1", "C2", "C3", "C4"))); // true
    System.out.println(list); // [a, b, C1, C2, C3, C4, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.addAll(3, List.of())); // false
    System.out.println(list); // [a, b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    //list.addAll(4, List.of("E")); // IndexOutOfBoundsException
}
final var src = List.of("a", "b", "c");
System.out.println(src);// [a, b, c]

final AbstractList<String> list = new ArrayList<>(src);

System.out.println(list.addAll(3, Set.of("D1", "D2", "D3"))); // true
System.out.println(list); // [a, b, c, D3, D2, D1]

void clear ()

Elimina todos los elementos de esta lista (operación opcional). (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");

System.out.println(list); // [a, b, c]

list.clear();
System.out.println(list); // []

boolean equals (Object o)

Compara el objeto especificado con esta lista para verificar la igualdad. (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c");
System.out.println(list); // [a, b, c]

System.out.println(list.equals(List.of("a"))); // false
System.out.println(list.equals(List.of("a", "b"))); // false
System.out.println(list.equals(List.of("a", "b", "c"))); // true
System.out.println(list.equals(List.of("c", "b", "a"))); // false
final AbstractList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c");
System.out.println(list); // [a, b, c]

final var arrayList = new ArrayList<>(list);
System.out.println(arrayList); // [a, b, c]
System.out.println(list.equals(arrayList)); // true

final var linkedList = new LinkedList<>(list);
System.out.println(linkedList); // [a, b, c]
System.out.println(list.equals(linkedList)); // true
final AbstractList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c");
System.out.println(list); // [a, b, c]

final var set = new LinkedHashSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]
System.out.println(list.equals(set)); // false

abstract E get (int index)

Devuelve el elemento en la posición especificada en esta lista. (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c");
System.out.println(list); // [a, b, c]

//list.get(-1); // IndexOutOfBoundsException
System.out.println(list.get(0)); // a
System.out.println(list.get(1)); // b
System.out.println(list.get(2)); // c
//list.get(3); // IndexOutOfBoundsException
final AbstractList<Integer> list = new ArrayList<>();
Collections.addAll(list, 10, 20, 30, 40);
System.out.println(list); // [10, 20, 30, 40]

System.out.println(list.get(0)); // 10
System.out.println(list.get(1)); // 20
System.out.println(list.get(2)); // 30
System.out.println(list.get(3)); // 40

int hashCode ()

Devuelve el valor del código hash de esta lista. (Traducción automática)

final AbstractList<String> list1 = new ArrayList<>();
Collections.addAll(list1, "a", "b", "c");
System.out.println(list1.hashCode()); // 126145

final AbstractList<String> list2 = new ArrayList<>();
Collections.addAll(list2, "A", "B", "C");
System.out.println(list2.hashCode()); // 94369

final AbstractList<Integer> list3 = new ArrayList<>();
Collections.addAll(list3, 1, 2, 3);
System.out.println(list3.hashCode()); // 30817

int indexOf (Object o)

Devuelve el índice de la primera aparición del elemento especificado en esta lista, o -1 si esta lista no contiene el elemento. (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c", "a", "b", "c");
System.out.println(list); // [a, b, c, a, b, c]

System.out.println(list.indexOf("")); // -1
System.out.println(list.indexOf("a")); // 0
System.out.println(list.indexOf("b")); // 1
System.out.println(list.indexOf("c")); // 2
System.out.println(list.indexOf("d")); // -1
System.out.println(list.indexOf("abc")); // -1

Iterator<E> iterator ()

Devuelve un iterador sobre los elementos de esta lista en la secuencia adecuada. (Traducción automática)

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

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

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

int lastIndexOf (Object o)

Devuelve el índice de la última aparición del elemento especificado en esta lista, o -1 si esta lista no contiene el elemento. (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c", "a", "b", "c");
System.out.println(list); // [a, b, c, a, b, c]

System.out.println(list.lastIndexOf("")); // -1
System.out.println(list.lastIndexOf("a")); // 3
System.out.println(list.lastIndexOf("b")); // 4
System.out.println(list.lastIndexOf("c")); // 5
System.out.println(list.lastIndexOf("d")); // -1
System.out.println(list.lastIndexOf("abc")); // -1

ListIterator<E> listIterator ()

Devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada). (Traducción automática)

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

final var listIterator = list.listIterator();
listIterator.forEachRemaining(System.out::println);

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

ListIterator<E> listIterator (int index)

Devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada), comenzando en la posición especificada en la lista. (Traducción automática)

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

{
    final var ret = list.listIterator(0);
    ret.forEachRemaining(System.out::println);

    // Result
    // ↓
    //aaa
    //bbb
    //ccc
}
{
    final var ret = list.listIterator(1);
    ret.forEachRemaining(System.out::println);

    // Result
    // ↓
    //bbb
    //ccc
}
{
    final var ret = list.listIterator(2);
    ret.forEachRemaining(System.out::println);

    // Result
    // ↓
    //ccc
}

E remove (int index)

Elimina el elemento en la posición especificada en esta lista (operación opcional). (Traducción automática)

final var src = List.of("a", "b", "c");
System.out.println(src); // [a, b, c]

{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.remove(0)); // a
    System.out.println(list); // [b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.remove(1)); // b
    System.out.println(list); // [a, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.remove(2)); // c
    System.out.println(list); // [a, b]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    //list.remove(3); // IndexOutOfBoundsException
}

protected void removeRange (int fromIndex, int toIndex)

Elimina de esta lista todos los elementos cuyo índice esté entre fromIndex, inclusive, y toIndex, exclusivo. (Traducción automática)

@SuppressWarnings("serial")
class MyList extends ArrayList<String> {

    MyList(Collection<String> c) {
        super(c);
    }

    @Override
    public void removeRange(int fromIndex, int toIndex) {
        super.removeRange(fromIndex, toIndex);
    }
}

final var src = List.of("a", "b", "c");
System.out.println(src); // [a, b, c]

{
    final var list = new MyList(src);
    System.out.println(list); // [a, b, c]

    list.removeRange(0, 1);
    System.out.println(list); // [b, c]
}
{
    final var list = new MyList(src);
    System.out.println(list); // [a, b, c]

    list.removeRange(0, 2);
    System.out.println(list); // [c]
}
{
    final var list = new MyList(src);
    System.out.println(list); // [a, b, c]

    list.removeRange(0, 3);
    System.out.println(list); // []
}

{
    final var list = new MyList(src);
    System.out.println(list); // [a, b, c]

    list.removeRange(1, 3);
    System.out.println(list); // [a]
}
{
    final var list = new MyList(src);
    System.out.println(list); // [a, b, c]

    list.removeRange(2, 3);
    System.out.println(list); // [a, b]
}
{
    final var list = new MyList(src);
    System.out.println(list); // [a, b, c]

    list.removeRange(3, 3);
    System.out.println(list); // [a, b, c]
}

E set (int index, E element)

Reemplaza el elemento en la posición especificada en esta lista con el elemento especificado (operación opcional). (Traducción automática)

final var src = List.of("a", "b", "c");
System.out.println(src); // [a, b, c]

{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.set(0, "A")); // a
    System.out.println(list); // [A, b, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.set(1, "B")); // b
    System.out.println(list); // [a, B, c]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    System.out.println(list.set(2, "C")); // c
    System.out.println(list); // [a, b, C]
}
{
    final AbstractList<String> list = new ArrayList<>(src);
    System.out.println(list); // [a, b, c]

    //list.set(3, "D"); // IndexOutOfBoundsException
}

List<E> subList (int fromIndex, int toIndex)

Devuelve una vista de la parte de esta lista entre el fromIndex especificado, inclusive, y el toIndex, exclusivo. (Traducción automática)

final AbstractList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");

System.out.println(list); // [a, b, c, d]

System.out.println(list.subList(0, 0)); // []
System.out.println(list.subList(0, 1)); // [a]
System.out.println(list.subList(0, 2)); // [a, b]
System.out.println(list.subList(0, 3)); // [a, b, c]
System.out.println(list.subList(0, 4)); // [a, b, c, d]
//list.subList(0, 5); // IndexOutOfBoundsException

final var subList = list.subList(1, 3);
System.out.println(subList); // [b, c]
System.out.println(list); // [a, b, c, d]

subList.set(0, "X");
System.out.println(subList); // [X, c]
System.out.println(list); // [a, X, c, d]

subList.add("Y");
System.out.println(subList); // [X, c, Y]
System.out.println(list); // [a, X, c, Y, d]

subList.remove("c");
System.out.println(subList); // [X, Y]
System.out.println(list); // [a, X, Y, d]

Methods declared in AbstractCollection

addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString

Consulte el siguiente enlace.

Methods declared in Collection

parallelStream, removeIf, stream, toArray

Consulte el siguiente enlace.

Methods declared in Iterable

forEach

Consulte el siguiente enlace.

Methods declared in List

addAll, addFirst, addLast, contains, containsAll, getFirst, getLast, isEmpty, remove, removeAll, removeFirst, removeLast, replaceAll, retainAll, reversed, size, sort, spliterator, toArray, toArray

Consulte el siguiente enlace.


Related posts

To top of page