Question Comment obtenir la dernière valeur d'une ArrayList


Comment puis-je obtenir la dernière valeur d'une ArrayList?

Je ne connais pas le dernier index de ArrayList.


433
2018-03-26 22:38


origine


Réponses:


Ce qui suit fait partie de List interface (que ArrayList implémente):

E e = list.get(list.size() - 1);

E est le type d'élément. Si la liste est vide, get jette un IndexOutOfBoundsException. Vous pouvez trouver toute la documentation de l'API ici.


509
2018-03-26 22:42



cela devrait le faire:

if (arrayList != null && !arrayList.isEmpty()) {
  T item = arrayList.get(arrayList.size()-1);
}

170
2018-03-26 22:41



Il n'y a pas un moyen élégant en Java à la vanille.

Google Goyave

le Google Goyave bibliothèque est super - consultez leur Iterables classe. Cette méthode va lancer un NoSuchElementException si la liste est vide, par opposition à un IndexOutOfBoundsException, comme avec le typique size()-1 approche - je trouve un NoSuchElementException beaucoup plus agréable, ou la possibilité de spécifier un défaut:

lastElement = Iterables.getLast(iterableList);

Vous pouvez également fournir une valeur par défaut si la liste est vide, au lieu d'une exception:

lastElement = Iterables.getLast(iterableList, null);

ou, si vous utilisez Options:

lastElementRaw = Iterables.getLast(iterableList, null);
lastElement = (lastElementRaw == null) ? Option.none() : Option.some(lastElementRaw);

158
2017-12-28 16:16



J'utilise la classe micro-util pour obtenir le dernier (et premier) élément de liste:

public final class Lists {

    private Lists() {
    }

    public static <T> T getFirst(List<T> list) {
        return list != null && !list.isEmpty() ? list.get(0) : null;
    }

    public static <T> T getLast(List<T> list) {
        return list != null && !list.isEmpty() ? list.get(list.size() - 1) : null;
    }
}

Légèrement plus flexible:

import java.util.List;

/**
 * Convenience class that provides a clearer API for obtaining list elements.
 */
public final class Lists {

  private Lists() {
  }

  /**
   * Returns the first item in the given list, or null if not found.
   *
   * @param <T> The generic list type.
   * @param list The list that may have a first item.
   *
   * @return null if the list is null or there is no first item.
   */
  public static <T> T getFirst( final List<T> list ) {
    return getFirst( list, null );
  }

  /**
   * Returns the last item in the given list, or null if not found.
   *
   * @param <T> The generic list type.
   * @param list The list that may have a last item.
   *
   * @return null if the list is null or there is no last item.
   */
  public static <T> T getLast( final List<T> list ) {
    return getLast( list, null );
  }

  /**
   * Returns the first item in the given list, or t if not found.
   *
   * @param <T> The generic list type.
   * @param list The list that may have a first item.
   * @param t The default return value.
   *
   * @return null if the list is null or there is no first item.
   */
  public static <T> T getFirst( final List<T> list, final T t ) {
    return isEmpty( list ) ? t : list.get( 0 );
  }

  /**
   * Returns the last item in the given list, or t if not found.
   *
   * @param <T> The generic list type.
   * @param list The list that may have a last item.
   * @param t The default return value.
   *
   * @return null if the list is null or there is no last item.
   */
  public static <T> T getLast( final List<T> list, final T t ) {
    return isEmpty( list ) ? t : list.get( list.size() - 1 );
  }

  /**
   * Returns true if the given list is null or empty.
   *
   * @param <T> The generic list type.
   * @param list The list that has a last item.
   *
   * @return true The list is empty.
   */
  public static <T> boolean isEmpty( final List<T> list ) {
    return list == null || list.isEmpty();
  }
}

22
2017-10-10 14:49



le size() method renvoie le nombre d'éléments dans ArrayList. Les valeurs d'index des éléments sont 0 par (size()-1), donc vous utiliseriez myArrayList.get(myArrayList.size()-1) pour récupérer le dernier élément.


9
2018-03-26 22:44



Si vous le pouvez, échangez le ArrayList pour un ArrayDeque, qui a des méthodes commodes comme removeLast.


4
2017-12-12 20:49



            Let ArrayList is myList

            public void getLastValue(List myList){
            // Check ArrayList is null or Empty
            if(myList == null || myList.isEmpty()){
                return;
            }

            // check size of arrayList
            int size = myList.size();


    // Since get method of Arraylist throws IndexOutOfBoundsException if index >= size of arrayList. And in arraylist item inserts from 0th index.
    //So please take care that last index will be (size of arrayList - 1)
            System.out.print("last value := "+myList.get(size-1));
        }

1
2017-07-22 21:02



Le dernier élément de la liste est list.size() - 1. La collection est soutenue par un tableau et les tableaux commencent à l'index 0.

Donc l'élément 1 de la liste est à l'index 0 dans le tableau

L'élément 2 de la liste est à l'index 1 dans le tableau

L'élément 3 de la liste est à l'index 2 du tableau

etc..


0
2017-11-25 11:28



Utilisation de lambdas:

Function<ArrayList<T>, T> getLast = a -> a.get(a.size() - 1);

0
2018-05-08 01:18