233 votes

Java ArrayList : comment ajouter des éléments au début ?

J'ai besoin d'ajouter des éléments à un ArrayList queue peu importe, mais lorsque j'appelle la fonction pour ajouter un élément, je veux qu'elle ajoute l'élément au début du tableau (il a donc l'indice le plus bas) et si le tableau a 10 éléments, l'ajout d'un nouvel élément entraîne la suppression de l'élément le plus ancien (celui qui a l'indice le plus élevé).

Quelqu'un a-t-il des suggestions à faire ?

3voto

feikiss Points 129

Je pense que la mise en œuvre devrait être facile, mais compte tenu de l'efficacité, vous devriez utiliser LinkedList et non ArrayList comme conteneur. Vous pouvez vous référer au code suivant :

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);
        }
    }
}

3voto

Josh Grill Points 11

Java LinkedList fournit à la fois la méthode addFirst(E e) et la méthode push(E e) qui ajoutent un élément au début de la liste.

https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html#addFirst(E)

2voto

Alice Points 725

Vous pouvez utiliser des méthodes de liste, supprimer et ajouter

list.add(lowestIndex, element);
list.remove(highestIndex, element);

1voto

MaVRoSCy Points 6962

Vous pouvez utiliser ce code

private List myList = new ArrayList();
private void addItemToList(Object obj){
    if(myList.size()<10){
      myList.add(0,obj);
    }else{
      myList.add(0,obj);
      myList.remove(10);
    }
}

0voto

a Learner Points 1070

Vous pouvez utiliser

public List<E> addToListStart(List<E> list, E obj){
list.add(0,obj);
return (List<E>)list;

}

Changez E avec votre type de données

Si la suppression de l'élément le plus ancien est nécessaire, vous pouvez ajouter :

list.remove(list.size()-1); 

avant l'instruction de retour. Sinon, la liste ajoutera votre objet au début et conservera également l'élément le plus ancien.

Cela supprimera le dernier élément de la liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X