gpt4 book ai didi

java - 集合排序/二进制搜索方法

转载 作者:行者123 更新时间:2023-12-05 07:04:27 25 4
gpt4 key购买 nike

我有一个关于 Collections API 二进制搜索和排序方法声明的查询。binarySearch 中的 list 参数使用上限通配符。但是 sort 方法中的 list 参数没有使用上界通配符。为什么这些不同?

对于sortlist不使用上界通配符。

static <T> void sort(List<T> list, Comparator<? super T> c)

对于 binarySearchlist 使用上限通配符。

static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

我想知道为什么在 sort 方法中不需要上界。

最佳答案

这是因为当你有一个 List<? extends T> ,您不能向其中添加元素或从中删除元素,因为您不知道该列表中元素的类型。它可能只是 T , 它可能是 Object ,或 T 的任何父类(super class)之间。参见 Java Generic with ArrayList<? extends A> add element获取更多信息。

作为@Lino - Vote don't say Thanksabove , 这对 binarySearch 没问题,因为它不必从给定列表中添加或删除元素 - 只要比较器可以比较每个元素,它就会很高兴。然而,sort确实必须四处移动元素,因此它需要列表是已知类型。

这并不意味着它实际上被利用了:java.util.Collections.java sources (OpenJDK 8)

关于java - 集合排序/二进制搜索方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62929535/

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