我有一个用整数填充的数组列表。我只需要一种方法来获取数组列表中的前三个整数。
问问题
17964 次
6 回答
8
List<Integer> list;
Collections.sort(list);
List<Integer> top3 = new ArrayList<Integer>(list.subList(list.size() -3, list.size()));
我本可以简单地使用 subList,但从 subList() 返回的列表是基本列表上的一个视图,因此在那里所做的更改将反映在 top3 中。
于 2013-07-09T05:02:43.153 回答
1
您需要编写自己的比较器并Collections.sort(list, comparator)
在您的 上使用ArrayList
,这会将前 3 个整数带到顶部(这纯粹基于比较器中的逻辑)。
于 2013-07-09T05:00:33.647 回答
1
这取决于列表的大小和您想要的性能。如果列表“小”,那么任何早期的解决方案都足够了,具体取决于您的要求。
如果列表“大”并且性能很重要,那么您应该遍历列表并保持 3 最大。
另一个权衡是您的时间和错误与使用库。与自定义编码的解决方案相比,提到的一种库方法将在更少的程序员时间内工作
于 2013-07-09T05:15:34.403 回答
0
使用 Collections.sort 对前三个值进行排序和检索
于 2013-07-09T05:00:38.310 回答
0
将所有元素放入TreeSet
usingTreeSet(Collection c)
构造函数中,然后用于TreeSet.descendingIterator
获取前 3 个元素。列表可能包含重复项,使用 TreeSet 保证您检索 3 个不同的最大值。
于 2013-07-09T05:02:38.690 回答
0
利用List#subList(int fromIndex,int toIndex)
返回此列表在指定的 fromIndex(包括)和 toIndex(不包括)之间的部分的视图。
yourList.subList(yourList.size() -n, yourList.size());
根据子列表文档
于 2013-07-09T05:03:16.320 回答