我有一个充满整数的arraylist。我只需要一种方法来获得arraylist中的前三个整数。
答案 0 :(得分:6)
List<Integer> list;
Collections.sort(list);
List<Integer> top3 = new ArrayList<Integer>(list.subList(list.size() -3, list.size()));
我本可以简单地使用subList,但是从subList()返回的列表是基本列表中的 view ,因此在那里进行的更改将反映在top3中。
答案 1 :(得分:1)
利用List#subList(int fromIndex,int toIndex)
返回指定fromIndex(包含)和toIndex(独占)之间此列表部分的视图。
yourList.subList(yourList.size() -n, yourList.size());
根据子列表文档
答案 2 :(得分:0)
您需要编写自己的比较器并在Collections.sort(list, comparator)
上使用ArrayList
,这将使前三个整数位于顶部(这完全基于比较器中的逻辑)。
答案 3 :(得分:0)
使用Collections.sort对前三个值进行排序和检索
答案 4 :(得分:0)
使用TreeSet
构造函数将所有元素放入TreeSet(Collection c)
,然后使用TreeSet.descendingIterator
获取前3个元素。列表可能包含重复项,使用TreeSet保证您检索3个不同的最大值。
答案 5 :(得分:0)
这取决于列表的大小以及您想要的性能。如果列表是“小”,则根据您的要求,任何早期的解决方案都足够了。
如果列表“大”并且性能很重要,那么您应该遍历列表并保持3个最大值。
另一个权衡是你的时间和错误与使用库。所提到的库方法之一在程序员时间上比在自定义编码的解决方案中更少。