java - list最后一个元素




如何获取ArrayList的最后一个值 (8)

我怎样才能得到ArrayList的最后一个值?

我不知道ArrayList的最后一个索引。


size()方法返回ArrayList中元素的数量。 元素的索引值是0(size()-1) ,因此您可以使用myArrayList.get(myArrayList.size()-1)来检索最后一个元素。


以下是List接口的一部分(ArrayList实现的):

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

E是元素类型。 如果列表为空,则抛出IndexOutOfBoundsException 。 你可以在here找到整个API文档。


在香草Java中没有一种优雅的方式。

Google Guava

Google Guava图书馆非常棒 - 查看他们的Iterables课程 。 如果列表为空,则此方法将引发NoSuchElementException ,而不像IndexOutOfBoundsException ,这与典型的size()-1方法相同 - 我发现NoSuchElementException更好,或者指定默认值:

lastElement = Iterables.getLast(iterableList);

如果列表为空而不是异常,则还可以提供默认值:

lastElement = Iterables.getLast(iterableList, null);

或者,如果您使用的是选项:

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

如果修改列表,然后使用listIterator()并从最后一个索引(即size()-1 )迭代。 如果再次失败,请检查您的列表结构。


我使用micro-util类获取列表的最后一个(和第一个)元素:

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;
    }
}

稍微更灵活:

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();
  }
}

所有你需要做的就是使用size()来获得Arraylist的最后一个值。 例如。 如果你是整数ArrayList,那么你将得到最后的值

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

请记住,可以使用索引值访问Arraylist中的元素。 因此,ArrayLists通常用于搜索项目。


这个怎么样?你班上的某个地方......

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;
    }

这应该做到这一点:

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




arraylist