792 Stimmen

Wie man den letzten Wert einer ArrayList erhält

Wie kann ich den letzten Wert einer ArrayList erhalten?

5voto

Gastón Saillén Punkte 10484

Wenn Sie stattdessen eine LinkedList verwenden, können Sie auf das erste Element und das letzte Element mit nur getFirst() y getLast() (wenn Sie eine sauberere Methode als size() -1 und get(0) wünschen)

Umsetzung

Deklarieren Sie eine LinkedList

LinkedList<Object> mLinkedList = new LinkedList<>();

Dann sind dies die Methoden, die Sie verwenden können, um zu bekommen, was Sie wollen, in diesem Fall sind wir über ZUERST y LAST Listenelement

/**
     * Returns the first element in this list.
     *
     * @return the first element in this list
     * @throws NoSuchElementException if this list is empty
     */
    public E getFirst() {
        final Node<E> f = first;
        if (f == null)
            throw new NoSuchElementException();
        return f.item;
    }

    /**
     * Returns the last element in this list.
     *
     * @return the last element in this list
     * @throws NoSuchElementException if this list is empty
     */
    public E getLast() {
        final Node<E> l = last;
        if (l == null)
            throw new NoSuchElementException();
        return l.item;
    }

    /**
     * Removes and returns the first element from this list.
     *
     * @return the first element from this list
     * @throws NoSuchElementException if this list is empty
     */
    public E removeFirst() {
        final Node<E> f = first;
        if (f == null)
            throw new NoSuchElementException();
        return unlinkFirst(f);
    }

    /**
     * Removes and returns the last element from this list.
     *
     * @return the last element from this list
     * @throws NoSuchElementException if this list is empty
     */
    public E removeLast() {
        final Node<E> l = last;
        if (l == null)
            throw new NoSuchElementException();
        return unlinkLast(l);
    }

    /**
     * Inserts the specified element at the beginning of this list.
     *
     * @param e the element to add
     */
    public void addFirst(E e) {
        linkFirst(e);
    }

    /**
     * Appends the specified element to the end of this list.
     *
     * <p>This method is equivalent to {@link #add}.
     *
     * @param e the element to add
     */
    public void addLast(E e) {
        linkLast(e);
    }

Sie können also Folgendes verwenden

mLinkedList.getLast(); 

um das letzte Element der Liste zu erhalten.

4voto

Craigo Punkte 2962

Ein Einzeiler, der auch leere Listen berücksichtigt, wäre:

T lastItem = list.size() == 0 ? null : list.get(list.size() - 1);

Oder wenn Sie Nullwerte nicht mögen (und die Leistung kein Problem ist):

Optional<T> lastItem = list.stream().reduce((first, second) -> second);

1voto

shravyaverma Punkte 11

Da die Indizierung in ArrayList beginnt bei 0 und endet eine Stelle vor der tatsächlichen Größe daher die korrekte Anweisung, um das letzte ArrayList-Element zurückgeben würde sein:

int last = mylist.get(mylist.size()-1);

Zum Beispiel:

wenn die Größe der Array-Liste 5 ist, dann würde size-1 = 4 das letzte Array-Element zurückgeben.

1voto

pero_hero Punkte 2612

Guave bietet eine weitere Möglichkeit, das letzte Element aus einer List :

last = Lists.reverse(list).get(0)

wenn die angegebene Liste leer ist, wird ein IndexOutOfBoundsException

-1voto

Med Sep Punkte 312

Das hat bei mir funktioniert.

private ArrayList<String> meals;
public String take(){
  return meals.remove(meals.size()-1);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X