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 ?

0voto

import java.util.*:
public class Logic {
  List<String> list = new ArrayList<String>();
  public static void main(String...args) {
  Scanner input = new Scanner(System.in);
    Logic obj = new Logic();
      for (int i=0;i<=20;i++) {
        String string = input.nextLine();
        obj.myLogic(string);
        obj.printList();
      }
 }
 public void myLogic(String strObj) {
   if (this.list.size()>=10) {
      this.list.remove(this.list.size()-1);
   } else {
     list.add(strObj); 
   }
 }
 public void printList() {
 System.out.print(this.list);
 }
}

0voto

Andrea Ciccotta Points 125
import com.google.common.collect.Lists;

import java.util.List;

/**
 * @author Ciccotta Andrea on 06/11/2020.
 */
public class CollectionUtils {

    /**
     * It models the prepend O(1), used against the common append/add O(n)
     * @param head first element of the list
     * @param body rest of the elements of the list
     * @return new list (with different memory-reference) made by [head, ...body]
     */
    public static <E> List<Object> prepend(final E head, List<E> final body){
        return Lists.asList(head, body.toArray());
    }

    /**
     * it models the typed version of prepend(E head, List<E> body)
     * @param type the array into which the elements of this list are to be stored
     */
    public static <E> List<E> prepend(final E head, List<E> body, final E[] type){
        return Lists.asList(head, body.toArray(type));
    }
}

0voto

wromma Points 1

El Deque de l'interface Java Collections possède la méthode addFirst . Il est disponible auprès de LinkedList aussi.

-1voto

FabianCid Points 24

J'ai eu un problème similaire, en essayant d'ajouter un élément au début d'un tableau existant, de décaler les éléments existants vers la droite et d'éliminer le plus ancien (array[length-1]). Ma solution n'est peut-être pas très performante mais elle fonctionne pour mes besoins.

 Method:

   updateArray (Element to insert)

     - for all the elements of the Array
       - start from the end and replace with the one on the left; 
     - Array [0] <- Element

Bonne chance

-1voto

Ashish Mehta Points 128

Prenez cet exemple :-

List<String> element1 = new ArrayList<>();
element1.add("two");
element1.add("three");
List<String> element2 = new ArrayList<>();
element2.add("one");
element2.addAll(element1);

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