gpt4 book ai didi

java - Java 8 函数式风格的冒泡排序

转载 作者:行者123 更新时间:2023-11-30 06:16:15 25 4
gpt4 key购买 nike

您将如何以函数式 (Java 8) 方式实现以下冒泡排序算法?

public static final <T extends Comparable<T>> List<T> imperativeBubbleSort(List<T> list) {
int len = list == null ? 0 : list.size();
for (int j = len - 1; j > 0; j--) {
for (int k = 0; k < j; k++) {
if (list.get(k + 1).compareTo(list.get(k)) < 0) {
list.add(k, list.remove(k + 1));
}
}
}
return list;
}

最佳答案

这取决于您所说的功能。如果您的意思只是将函数作为一流对象传递,那么您应该将方法签名更改为:

public static final <T> List<T> imperativeBubbleSort(List<T> list, Comparator<T> comparisonFunction)

这样就可以将比较逻辑作为参数提供。

如果您的意思是完全发挥作用而不是完全程序化,那么我会称之为反模式。不管您听到什么,Java 8 并不完全支持函数式编程。它缺少的一个关键特性是尾调用优化。没有它,定义函数式编程的那种无循环编程很可能会因为相对较小的值而使您的 JVM 崩溃。

有关尾调用优化和 JVM 的更多信息可在此处找到:http://www.drdobbs.com/jvm/tail-call-optimization-and-java/240167044

关于java - Java 8 函数式风格的冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27639792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com