从List/ArrayList中获取最后三个元素?

24

我需要获取一个List中最后添加的三个元素。是否有任何实用方法可以做到这一点,还是我只需使用一个for循环从"size(myList)-1"开始迭代即可?


这取决于你想用这些元素做什么。你需要更具体地说明。 - jlordo
@BrianRoach 好的,就像我说的,这里有大量的问题已经可以通过文档和指南来回答。我看到很多问题问“是否有这样那样的实用方法”。为什么你不去开始催促其他用户查找文档和指南呢?因为你可以确定大量SO问题的答案已经存在于网络上。 - sonicboom
@sonicboom:如果我可以代表自己说话,那么在SO上出现的极其琐碎的问题数量已经变得如此之高,以至于很难找到真正存在问题的问题。在你的情况下,你有一个非常简单的问题,你甚至已经提供了一个合理的解决方案,可能花费的时间比快速查看JavaDocs以检查是否有更好的解决方案所需的时间还要长。 - jarnbjo
@jarnbjo,Java文档中没有与NPE在下面回答的解决方案相比的解决方案,请重新评估并考虑保持其开放。 - Himalay Majumdar
6个回答

66

您可以使用List.subList()来获取原始列表的尾部视图:

List<E> tail = l.subList(Math.max(l.size() - 3, 0), l.size());

在这里,Math.max() 处理了 l 包含少于三个元素的情况。


1
这很好 - 但属于一个实用类,有人知道任何的吗?如果没有,应该很容易添加。我现在先在本地得到了它。 - arntg
很好,这真的起作用了。 - Raul Chiarella

5

请参阅:

List.subList(arg0, arg1)!

5

1
这在短列表上会失败,请参见使用Math.max的其他答案。 - arntg

2

1
尝试
    List list = Arrays.asList(1, 2, 3, 4);
    ListIterator i = list.listIterator(list.size());
    while (i.previousIndex() != list.size() - 4) {
        Object e = i.previous();
        System.out.print(e + " ");
    }

打印

4 3 2

0
也许在这里使用 java.util.Stack 更有用。你的列表是用来做什么的?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接