我的情况是这样的:我有两个带有不同类型对象的arraylists。每个对象都有一个字段名和一个字段日期ArrayList事件、ArrayList事物。我按名称对arraylists进行排序,如果名称相同,则按日期进行排序。
假设ArrayList1具有以下对象:event1 01.12、event1 05.12、event2 04.03、event3 05.05
Event0 02.11(from2)
Event1 01.12(from1), 05.12(from1)
Event2 02.01(from2), 04.03(from1)
Event3 05.10(from1)
我如何迭代两个arraylists并获得每个唯一的事件和所有日期,以便在一个桌面上显示?
我是这样分类的
Collections.sort(alist, new Comparator<Object1>() {
@Override
public int compare(Object1 a1, Object1 a2) {
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date date1;
Date date2;
if(a1.name.equals(a2.name)) {
try {
date1 = format.parse(a1.date);
date2 = format.parse(a2.date);
} catch (ParseException e) {
throw new IllegalArgumentException("Could not parse date!", e);
}
return date1.compareTo(date2);
}
else
return a1.name.compareTo(a2.name) ;
}
});
最好的方法是让不同类型的对象从同一个类继承/实现同一个接口。如果不可能,请尝试以下操作:
List<Object> combinedList = new ArrayList<>();
combinedList.addAll(array1);
combinedList.addAll(array2);
Collections.sort(combinedList, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
String name1 = o1 instanceof Type1 ? ((Type1) o1).getName()
: ((Type2) o1).getName();
String name2 = o2 instanceof Type1 ? ((Type1) o2).getName()
: ((Type2) o2).getName();
Date date1 = o1 instanceof Type1 ? ((Type1) o1).getDate()
: ((Type2) o1).getDate();
Date date2 = o2 instanceof Type1 ? ((Type1) o2).getDate()
: ((Type2) o2).getDate();
int comparedNames = name1.compareTo(name2);
return comparedEvents != 0 ? comparedEvents : date1.compareTo(date2);
}
});
问题 你有一系列排序序列,想将它们合并后得到一个排序序列并在上面迭代遍历。 解决方案 heapq.merge() 函数可以帮你解决这个问题。比如: >>> import heapq >>> a = [1, 4, 7, 10] >>> b = [2, 5, 6, 11] >>> for c in heapq.merge(a, b): ... print(c) ... 1 2 4 5 6 7
为了简单起见,我试图组合两个不同对象的列表,我将它们称为和,最后根据它们的日期值对组合列表进行排序。我已经在这里看到了大部分的答案,但它们并没有展示如何正确实现这样的用例的全貌。 我还实现了一个自定义类,它处理两个给定列表的合并和排序。我们将其称为。使用下面实现的方法。 这就是问题所在,因为我在上得到一个错误,“reason:没有变量类型的实例存在,所以对象符合接口”
本文向大家介绍手写代码:合并两个排序数组相关面试题,主要包含被问及手写代码:合并两个排序数组时的应答技巧和注意事项,需要的朋友参考一下 参考回答:
问题内容: 假设我有两个类CLassA和CLassB。它们有一个共同的属性,例如每个类拥有的元素数量。 我如何从ClassA和CLassB的对象创建一个集合,并按该属性排序(降序升序无所谓)? 我收集了一个类型,但是当我尝试实现Comparable Interface时,我无法使用该方法(例如,获取返回元素nr的get)。 我有什么解决方案? 谢谢你的帮助! 问题答案: 实际上,如果要将它们放在同
问题内容: 给定两个排序数组,如下所示: 我希望输出为: 要么: 我知道我可以执行以下操作: 我只是想知道是否有一种更快的方法,因为我要处理的数组具有数百万个元素。 任何想法都欢迎。谢谢 问题答案: 由于您使用numpy,因此我怀疑bisec根本不会对您有所帮助。因此,我建议您做两件事: 千万 不能 使用,使用方法,而不是这种种取代阵列,避免了复制。 必须使用没有到位的。因此,不要手动使用逻辑。I
问题是== 将nums1和nums2合并到一个按非递减顺序排序的数组中。 最终排序的数组不应由函数返回,而应存储在数组 nums1 中。为了适应这种情况,nums1 的长度为 m n,其中前 m 个元素表示应合并的元素,最后 n 个元素设置为 0 并应忽略。nums2 的长度为 n。 我的代码中有什么错误??? 您的意见 我的产出 预期产出