请解释代码对接口中的泛型是如何进行约束的?并举例该接口如何使
用?
public static <T, U extends Comparable<? super U>> Comparator
comparing(
Function<? super T, ? extends U> keyExtractor){
return (Comparator) (c1, c2) -> keyExtractor.apply(c1).compareTo(
keyExtractor.apply(c2));
}
有谁可以帮解释一下 ,一个Java的题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- it_hao528 2022-07-08 16:51关注
这里的泛型 U extends Comparable<? super U> 表示 U实现了Comparable接口。
这里的Function是一个函数式接口,原型是Function<T,R>,T是参数类型,R是返回类型。在这里整体用作参数是为了用于lambda表达式。
该方法用发是进行比较排序时用的,例如对一个list进行排序如下:List<String> stringList = new ArrayList<>(); stringList.sort(Comparator.comparing((String str) -> { return str; }));
因为String是实现了Comparable接口,默认是升序。这里的(String str)就相当于是T,return str;相当于是R返回的是字符串。也就是R是返回了实现了Comparable接口的对象。这个还可以进一步优化如下:
List<String> stringList = new ArrayList<>(); stringList.sort(Comparator.comparing(str -> str));
希望对你有帮助
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊