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

标签 java sorting comparison

我有一个名为 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/

相关文章:

java - 如果发生无限递归,如何让递归函数返回 false

java - Android:重定向拨出电话

xml - XSLT 应用于具有 xmlns 属性的 XML 文档

java - 对数组中的字符串进行冒泡排序

javascript - node.js 和 Tornado 的区别

java - 查找列表中所需条目的数量?

java - 如何在 Mac 应用程序菜单中隐藏 "Preferences"项

java - 从 JList 中删除项目抛出 NullPointerException

swift - 在 Swift 中使用子结构对结构进行排序

perl - 如何使用 Perl 判断两个文件的内容是否相同?