Общие утилиты Java для получения размера списка и последнего объекта - PullRequest
0 голосов
/ 23 июля 2011

Даже если сделать дескриптор легко, но мне интересно, есть ли какой-нибудь известный помощник, помогающий получить размер списка или получить последний объект списка. Я думаю, что это действительно популярное требование, но я не смог его найти.

size = list==null? 0: list.size();
lastObject = isEmpty(list)? null:list.get(list.size() - 1).

Спасибо,

Ответы [ 3 ]

3 голосов
/ 23 июля 2011

Мне это не кажется таким уж полезным. Я пытаюсь инициализировать свои списки, чтобы они не были нулевыми, поэтому первый из них вообще не нужен. Что касается второго, возвращать потенциально нулевой объект не более (который затем должен быть проверен, чтобы определить, является ли он нулевым), чем сначала проверять размер списка.

2 голосов
/ 23 июля 2011

Для этого AFAIK нет вспомогательного метода. Одна вещь, которую вы должны удостовериться в том, что при написании собственной вспомогательной утилиты, обратите особое внимание на вашу целевую коллекцию. Если это List, избегайте использования get(index), так как это не очень эффективно для реализации связанного списка. Если это ArrayList или вообще любая коллекция, которая реализует RandomAccess, get очень эффективна. Наиболее общим способом было бы получить итератор для последнего элемента и вызвать next() для него, если он существует.

public static <T> T getLast(final List<T> list) {
    final ListIterator<T> listIterator = list.listIterator(list.size());
    return listIterator.hasPrevious() ? listIterator.previous() : null;
}
0 голосов
/ 23 июля 2011

В Google Guava есть метод getLast .Тем не менее, я не смог найти метод размера, который обрабатывает нулевые коллекции.

...