如何在 JAVA 中一次传递一个类的两个单独实例,以对该类中的某些数据进行排序



我有一个名为FACTORY的类。工厂类包含一个名为 Time 的变量,该变量具有一定的值。我想传递我的类 FACTORY like 的两个实例(工厂 A、工厂 B(来对可用数据进行排序。下面的代码是快速的。如何在 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
            }
'

''

下面是一个如何按时间价值对工厂进行排序的示例。

List<Factory> sortedFactories = factories.stream().sorted((first, second) -> {
            final long time1 = first.getTime();
            final long time2 = second.getTime();
            return time1-time2;
        }).collect(Collectors.toList());

它是如何工作的:
在第一行中,将 List 工厂转换为 java8 Stream 类。
之后,你开始排序算法(使用方法sort((first,decond(-> [...](;
java8 的排序算法是这样工作的:
该算法调用您的比较器(此处比较器是 lamba 表达式(第一个,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((的列表;

我希望我能帮助你。

最新更新