Java : AbstractQueue con ejemplos

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

Nota :


Summary

Esta clase proporciona implementaciones básicas de algunas operaciones de cola. Las implementaciones de esta clase son adecuadas cuando la implementación base no permite elementos nulos. Los métodos add, remove y element se basan en offer, poll y peek, respectivamente, pero arrojan excepciones en lugar de indicar un error mediante devoluciones falsas o nulas. (Traducción automática)

Class diagram

public class MyQueue extends AbstractQueue<String> {
    private final List<String> values = new ArrayList<>();

    @Override
    public Iterator<String> iterator() {
        return values.iterator();
    }

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

    @Override
    public boolean offer(String s) {
        Objects.requireNonNull(s);
        return values.add(s);
    }

    @Override
    public String poll() {
        return values.isEmpty() ? null : values.removeFirst();
    }

    @Override
    public String peek() {
        return values.isEmpty() ? null : values.getFirst();
    }
}

Note : The MyQueue class uses ArrayList for implementation, but it may not be efficient.

final var queue = new MyQueue();
queue.offer("aaa");
queue.offer("bbb");
queue.offer("ccc");

System.out.println(queue); // [aaa, bbb, ccc]

System.out.println(queue.poll()); // aaa
System.out.println(queue.poll()); // bbb
System.out.println(queue.poll()); // ccc

Constructors

AbstractQueue ()

Constructor para uso de subclases. (Traducción automática)

public class MyQueue extends AbstractQueue<String> {
    private final List<String> values = new ArrayList<>();

    @Override
    public Iterator<String> iterator() {
        return values.iterator();
    }

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

    @Override
    public boolean offer(String s) {
        Objects.requireNonNull(s);
        return values.add(s);
    }

    @Override
    public String poll() {
        return values.isEmpty() ? null : values.removeFirst();
    }

    @Override
    public String peek() {
        return values.isEmpty() ? null : values.getFirst();
    }
}

Note : The MyQueue class uses ArrayList for implementation, but it may not be efficient.

final var queue = new MyQueue();
queue.offer("aaa");
queue.offer("bbb");
queue.offer("ccc");

System.out.println(queue); // [aaa, bbb, ccc]

System.out.println(queue.poll()); // aaa
System.out.println(queue.poll()); // bbb
System.out.println(queue.poll()); // ccc

Methods

boolean add (E e)

Inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin violar las restricciones de capacidad, devolviendo verdadero en caso de éxito y lanzando una IllegalStateException si no hay espacio disponible actualmente. (Traducción automática)

// capacity = 3
final AbstractQueue<String> queue = new ArrayBlockingQueue<>(3);
System.out.println(queue); // []

System.out.println(queue.add("aaa")); // true
System.out.println(queue); // [aaa]

System.out.println(queue.add("bbb")); // true
System.out.println(queue); // [aaa, bbb]

System.out.println(queue.add("ccc")); // true
System.out.println(queue); // [aaa, bbb, ccc]

try {
    queue.add("ddd");
} catch (IllegalStateException e) {
    System.out.println("IllegalStateException! : " + e.getMessage());
}

// Result
// ↓
//IllegalStateException! : Queue full

boolean addAll (Collection<? extends E> c)

Agrega todos los elementos de la colección especificada a esta cola. (Traducción automática)

final AbstractQueue<String> queue = new ArrayBlockingQueue<>(10);
System.out.println(queue); // []

System.out.println(queue.addAll(List.of("a1"))); // true
System.out.println(queue); // [a1]

System.out.println(queue.addAll(List.of("b1", "b2"))); // true
System.out.println(queue); // [a1, b1, b2]

System.out.println(queue.addAll(List.of("c1", "c2", "c3"))); // true
System.out.println(queue); // [a1, b1, b2, c1, c2, c3]

void clear ()

Elimina todos los elementos de esta cola. (Traducción automática)

final AbstractQueue<String> queue = new ArrayBlockingQueue<>(10);
System.out.println(queue); // []

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

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

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

E element ()

Recupera, pero no elimina, el encabezado de esta cola. (Traducción automática)

final AbstractQueue<String> queue = new ArrayBlockingQueue<>(10);
System.out.println(queue); // []

queue.add("aaa");
queue.add("bbb");
queue.add("ccc");

System.out.println(queue.element()); // aaa
System.out.println(queue); // [aaa, bbb, ccc]

System.out.println(queue.remove()); // aaa
System.out.println(queue); // [bbb, ccc]

System.out.println(queue.element()); // bbb
System.out.println(queue); // [bbb, ccc]

System.out.println(queue.remove()); // bbb
System.out.println(queue); // [ccc]

System.out.println(queue.element()); // ccc
System.out.println(queue); // [ccc]

System.out.println(queue.remove()); // ccc
System.out.println(queue); // []

try {
    queue.element();
} catch (NoSuchElementException e) {
    System.out.println("NoSuchElementException!");
}

// Result
// ↓
//NoSuchElementException!

E remove ()

Recupera y elimina el encabezado de esta cola. (Traducción automática)

final AbstractQueue<String> queue = new ArrayBlockingQueue<>(10);
System.out.println(queue); // []

queue.add("aaa");
queue.add("bbb");
queue.add("ccc");

System.out.println(queue); // [aaa, bbb, ccc]

System.out.println(queue.remove()); // aaa
System.out.println(queue); // [bbb, ccc]

System.out.println(queue.remove()); // bbb
System.out.println(queue); // [ccc]

System.out.println(queue.remove()); // ccc
System.out.println(queue); // []

try {
    queue.remove();
} catch (NoSuchElementException e) {
    System.out.println("NoSuchElementException!");
}

// Result
// ↓
//NoSuchElementException!

Methods declared in AbstractCollection

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

Consulte el siguiente enlace.

Methods declared in Collection

contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray

Consulte el siguiente enlace.

Methods declared in Iterable

forEach

Consulte el siguiente enlace.

Methods declared in Queue

offer, peek, poll

Consulte el siguiente enlace.


Related posts

To top of page