0

我有一个名为 FACTORY 的课程。工厂类包含一个名为 Time 的变量,它有一些值。我想传递我的类 FACTORY 的两个实例,例如 (FACTORY A, FACTORY 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
            }

'''

4

1 回答 1

0

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

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 的排序算法是这样工作的:
算法调用您的比较器(这里比较器是兰巴表达式(首先, 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 转换为列表

我希望我能帮助你。

于 2019-06-13T10:45:46.703 回答