我有两个函数,它们对两个不同对象类型的列表执行相同的操作 我是泛型的新手,正在try 为下面的函数创建一个泛型方法.

如果有人能帮助我如何使用映射的泛型,比较器函数,我将非常感激

public static List<Long> function1(List<Object1> object1) {
return object1.stream().map(Object1::getParameter1)
       sorted(Comparator.reverseOrder()).collect(Collectors.toList());
}
public static List<Long> function2(List<Object2> object2) {
return object2.stream().map(Object2::getParameter1)
       sorted(Comparator.reverseOrder()).collect(Collectors.toList());
}
public static <T> List<T> function2(List<T> object) {
return new code
}

推荐答案

您可以做到这一点,但您可能会觉得这比只有两个不同的功能更尴尬.这假设您始终希望按降序进行排序:

public static <T, U extends Comparable<? super U>> List<U> function2(
    List<T> list, Function<T, U> getter) {
  return list.stream().map(getter)
       .sorted(Comparator.reverseOrder()).collect(Collectors.toList());
}

你会这样称呼它

public static List<Long> function1(List<Object1> object1) {
  return function2(object1, Object1::getParameter1);
}

或者,如果你想控制排序:

public static <T, U> List<U> function2(
    List<T> list, Function<T, U> getter, Comparator<? super U> comparator) {
  return list.stream().map(getter).sorted(comparator).collect(Collectors.toList());
}

你会这样称呼它:

public static List<Long> function1(List<Object1> object1) {
  return function2(object1, Object1::getParameter1, Comparator.reverseOrder());
}

Java相关问答推荐

try Dockerize Maven应用程序,但发布版本21不支持"

Android -如何修复Java.time.zone. ZoneRulesExcept:未知时区ID:Europe/Kyiv

如何使用CSS为选定但未聚焦的表格行设置背景 colored颜色 ?

Java JAR环境(JRE)是否支持模块?

Java Streams在矩阵遍历中的性能影响

空手道比赛条件

编译多个.Java文件并运行一个依赖于用户参数的文件

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

Java流传输一个列表并创建单个对象

更新AWS凭据

S,要对Java复制构造函数深度克隆所有属性进行单元测试,最可靠的方法是什么?

如何将Java文档配置为在指定的项目根目录中生成?

Java 11 HttpCookie.parse在解析包含JSON的Cookie时引发IlLegalArgumentException

删除打印语句会影响功能...腐败在起作用?

Android应用程序为错误的显示类型 Select 尺寸文件

使用for循环时出现堆栈溢出错误,但如果使用if块执行相同的操作,则不会产生错误

为什么相同的数据条码在视觉上看起来不同?

用于Java的Visual Studio代码完成不起作用

错误:JOIN/ON的参数必须是boolean类型,而不是bigint类型.Java Spring启动应用程序

可以';不要在Intellij IDEA中使用最新的Java版本(JDK 21)