我有一个名为 FACTORY 的类。工厂类包含一个名为 Time 的变量,它具有一些值。我想传递 FACTORY 类的两个实例(例如(FACTORY A,FACTORY B))来对可用数据进行排序。 下面的代码是 swift 的。我怎样才能在JAVA中实现同样的功能。
Swift 代码
'''
self.factories = self.factories.sorted { (first: FACTORY, second: FACTORY) in
var times = [first.Time]
var firstDate: Time? = nil
for time in times {
if let dateFromTime = DateFormatter.iso8601TimeFormatter.date(from: time) {
}
}
times = [second.Time]
var secondDate: Time? = nil
for time in times {
if let dateFromTime = DateFormatter.iso8601TimeFormatter.date(from: time) {
}
}
if firstDate != nil && secondDate != nil {
return firstDate! < secondDate!
}
return false
}
'''
最佳答案
以下示例展示了如何按工厂的时间值(value)对工厂进行排序。
List<Factory> sortedFactories = factories.stream().sorted((first, second) -> {
final long time1 = first.getTime();
final long time2 = second.getTime();
return time1-time2;
}).collect(Collectors.toList());
它是如何工作的:
在第一行中,将 theList 工厂转换为 java8 Stream 类。
之后,启动排序算法(使用方法sorted((first, decond) -> [...]);
java8的排序算法是这样工作的:
该算法调用您的比较器(这里的比较器是lambda表达式(first, decond) -> {...});
并且您的比较器必须返回:
A negative integer, zero, or a positive integer as the
first argument is less than, equal to, or greater than the
second.
你的列表神奇地排序了:D
最后,使用 .collect(Collectors.toList()); 将 Stream 转换为列表
希望对你有帮助。
关于java - 如何在JAVA中一次传递一个类的两个单独实例来对该类中的一些数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56578204/