【发布时间】:2013-06-26 01:30:25
【问题描述】:
我有一个多维日期数组,严格来说是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,但在实践中我不知道这个数字,所以我认为移动设备的最佳解决方案不是加入所有二级数组列表并排序新的大的,如果只使用一些项目的话。
【问题讨论】:
-
I need to generate...。只有尝试才会发生。 -
您能说得更具体些吗?听起来您以正确的方式(至少在精神上)解决了它,并说这不是您想要的..
-
在这两行之间,我读到您想要前 20 个日期,而不是对整个列表进行排序。这是一个不同的问题,并且具有比排序更快的解决方案。请清楚你想要什么。
-
@KarthikT 我最初对解决方案的想法非常耗费资源。如果我加入所有
Date元素,我最终可以处理大量日期,实际上我只需要使用其中的一部分。这就是为什么我认为我需要一个更优化的解决方案。 -
@Jago 混淆来自于你的问题正是这样问的。所以我希望你错过了一些细节,或者这个问题的措辞可能会更好。
标签: java android sorting multidimensional-array arraylist