我有一个多维日期数组,严格来说是一个ArrayList<ArrayList<Date>>
. 我需要生成一个新的单维ArrayList<Date>
,它由前面提到的多维数组的所有数组中的项组成。
我的第一个想法是将所有的arraylists连接在一起并对其进行排序,但是由于我不知道每个级别的元素数量,并且只需要生成的数组中的一定数量的元素,那会有点太多内存- 和处理器重。我的意思是,如果我将所有Date
元素合并为一个ArrayList<Date>
,我最终可能会得到一个包含数千个日期的数组列表......最终将其修剪为前 20 个。这就是我放弃该解决方案的原因。
那么,我可以使用哪种算法将 N(或 2)级别的元素排序为 1?
编辑
ArrayList<Date> a1 = new ArrayList<Date>();
a1.add(new Date(15));
a1.add(new Date(16));
a1.add(new Date(23));
ArrayList<Date> a2 = new ArrayList<Date>();
a2.add(new Date(1));
a2.add(new Date(25));
a2.add(new Date(89));
ArrayList<Date> a3 = new ArrayList<Date>();
a3.add(new Date(64));
a3.add(new Date(72));
a3.add(new Date(73));
ArrayList<ArrayList<Date>> b = new ArrayList<ArrayList<Date>>();
b.add(a1);
b.add(a2);
b.add(a3);
我需要实现一个getLatestDates(ArryList<ArrayList<Date>>, Integer)
这样的方法来返回:
getLatestDates(b, 5) = {Date (89), Date(73), Date(72), Date(64), Date(25)};
在这个例子中只有 3 ArrayList
,但在实践中我不知道这个数字,所以我认为移动设备的最佳解决方案不是加入所有二级数组列表并对新的大数组进行排序,如果只有一个要使用的项目数。