Java ArrayList cómo agregar elementos al principio
⏰ 3 minutos de lectura
ZeDonDino
Necesito agregar elementos a un ArrayList poner en cola lo que sea, pero cuando llamo a la función para agregar un elemento, quiero que agregue el elemento al comienzo de la matriz (para que tenga el índice más bajo) y si la matriz tiene 10 elementos, agregar un nuevo resultado eliminando el más antiguo elemento (el de mayor índice).
¿Alguien tiene alguna sugerencia?
¿Quieres decir como remove y add?
– Peter Lawrey
18 de octubre de 2012 a las 7:54
¿Qué estás usando tu arraylist stack queue whatever ya que es mejor evitar agregar al comienzo de una matriz y parece que debería estar usando una colección diferente.
– Peter Lawrey
18 de octubre de 2012 a las 7:56
Primero, deberías hacer algo tú mismo. ¿Que has hecho hasta ahora?
–Yegoshin Maxim
18 de octubre de 2012 a las 8:04
baz
List tiene el metodo add(int, E)por lo que puede utilizar:
CircularFifoQueue es una cola de primero en entrar, primero en salir con un tamaño fijo que reemplaza su elemento más antiguo si está lleno.
Simplemente inicialícelo con su tamaño máximo:
CircularFifoQueue queue = new CircularFifoQueue(10);
No tocaría ninguna biblioteca apache con un poste de diez pies, especialmente porque existen clases de colección de guayaba. EvictingQueue de Guava podría ser una buena opción aquí.
– DPM
13 de julio de 2017 a las 17:48
patricio favre
Uso de estructuras de datos específicas
Hay varias estructuras de datos que están optimizadas para agregar elementos en el primer índice. Sin embargo, tenga en cuenta que si convierte su colección en una de estas, la conversación probablemente necesitará una complejidad de tiempo y espacio de O(n)
Inserta el elemento especificado en la posición especificada en esta lista. Cambia el elemento actualmente en esa posición (si lo hay) y cualquier elemento subsiguiente a la derecha (agrega uno a sus índices).
Una vez que agregue, puede verificar el tamaño de ArrayList y eliminar los que están al final.
Es posible que desee mirar a Deque. le da acceso directo tanto al primer como al último elemento de la lista.
Rohit jainista
Lo que estás describiendo, es una situación apropiada para usar Queue.
Ya que quieres add elemento nuevo y remove el viejo. Puede agregar al final y eliminar desde el principio. Eso no hará mucha diferencia.
La cola tiene métodos add(e) y remove() que agrega al final el nuevo elemento y elimina desde el principio el elemento anterior, respectivamente.
CircularFifoBuffer es un búfer primero en entrar, primero en salir con un tamaño fijo que reemplaza su elemento más antiguo si está lleno.
Buffer queue = new CircularFifoBuffer(2); // Max size
queue.add(5);
queue.add(6);
queue.add(7); // Automatically removes the first element `5`
Como puede ver, cuando se alcanza el tamaño máximo, al agregar un nuevo elemento se elimina automáticamente el primer elemento insertado.
Juan Gowers
Creo que la implementación debería ser fácil, pero teniendo en cuenta la eficiencia, debe usar LinkedList pero no ArrayList como contenedor. Puede consultar el siguiente código:
import java.util.LinkedList;
import java.util.List;
public class DataContainer {
private List<Integer> list;
int length = 10;
public void addDataToArrayList(int data){
list.add(0, data);
if(list.size()>10){
list.remove(length);
}
}
public static void main(String[] args) {
DataContainer comp = new DataContainer();
comp.list = new LinkedList<Integer>();
int cycleCount = 100000000;
for(int i = 0; i < cycleCount; i ++){
comp.addDataToArrayList(i);
}
}
}
elgman121
Java LinkedList proporciona los métodos addFirst(E e) y push(E e) que agregan un elemento al principio de la lista.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
¿Quieres decir como
remove
yadd
?– Peter Lawrey
18 de octubre de 2012 a las 7:54
¿Qué estás usando tu
arraylist stack queue whatever
ya que es mejor evitar agregar al comienzo de una matriz y parece que debería estar usando una colección diferente.– Peter Lawrey
18 de octubre de 2012 a las 7:56
Primero, deberías hacer algo tú mismo. ¿Que has hecho hasta ahora?
–Yegoshin Maxim
18 de octubre de 2012 a las 8:04