Как получить последнее значение ArrayList - PullRequest
515 голосов
/ 27 марта 2009

Как я могу получить последнее значение ArrayList?

Я не знаю последний индекс ArrayList.

Ответы [ 16 ]

0 голосов
/ 12 ноября 2018

Если вы используете LinkedList вместо этого, вы можете получить доступ к первому элементу и последнему только с getFirst() и getLast() (если вы хотите более чистый путь, чем size () -1 и get (0))

Осуществление

Объявление LinkedList

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

Тогда это методы, которые вы можете использовать, чтобы получить то, что вы хотите, в данном случае речь идет о FIRST и LAST элементе списка

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

Итак, тогда вы можете использовать

mLinkedList.getLast(); 

чтобы получить последний элемент списка.

0 голосов
/ 05 апреля 2017

массивы хранят свой размер в локальной переменной, называемой «длина». Имея массив с именем "a", вы можете использовать следующее для ссылки на последний индекс, не зная значения индекса

а [a.length-1]

чтобы присвоить значение 5 этому последнему индексу, который вы будете использовать:

а [a.length-1] = 5;

0 голосов
/ 14 февраля 2016

Все, что вам нужно сделать, это использовать size (), чтобы получить последнее значение Arraylist. Например если вы ArrayList из целых чисел, то для получения последнего значения вам нужно будет

int lastValue = arrList.get(arrList.size()-1);

Помните, что к элементам в Arraylist можно получить доступ, используя значения индекса. Поэтому ArrayLists обычно используются для поиска элементов.

0 голосов
/ 25 ноября 2015

Последний элемент в списке - list.size() - 1. Коллекция поддерживается массивом, а массивы начинаются с индекса 0.

Таким образом, элемент 1 в списке имеет индекс 0 в массиве

Элемент 2 в списке имеет индекс 1 в массиве

Элемент 3 в списке имеет индекс 2 в массиве

и т. Д. *

0 голосов
/ 13 декабря 2014

Как насчет этого .. Где-то в вашем классе ...

List<E> list = new ArrayList<E>();
private int i = -1;
    public void addObjToList(E elt){
        i++;
        list.add(elt);
    }


    public E getObjFromList(){
        if(i == -1){ 
            //If list is empty handle the way you would like to... I am returning a null object
            return null; // or throw an exception
        }

        E object = list.get(i);
        list.remove(i); //Optional - makes list work like a stack
        i--;            //Optional - makes list work like a stack
        return object;
    }
0 голосов
/ 28 октября 2010

Если вы измените свой список, используйте listIterator() и итерируйте с последнего индекса (то есть size()-1 соответственно) Если вам снова не удалось, проверьте структуру списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...