[英]Error with generic list argument to Collections.binarySearch
嘗試用Java編寫Python樣式bisect_right,並使用List參數的通用類型:
import java.util.*;
class Util {
/* eqv to python's bisect_right. That is: return insertion point, but
if key is in list, insertion point is to right of it.
*/
//public static int bisect_right(List<String> list, String x) { //>> type specific
public static <E> int bisect_right(List<E> list, E x) {
int idx = Collections.binarySearch(list, x);
if (idx >= 0) { // key contained in list
idx = idx + 1;
}
else {
idx = -idx -1;
}
return idx;
}
}
編譯器抱怨找不到匹配Collections.binarySearch
的方法。 我究竟做錯了什么?
問題是E
需要Comparable<? super E>
Comparable<? super E>
來調用Collections.binarySearch
方法 ,但是您沒有在E
上綁定它。
將綁定的內容添加到bisect_right
方法的E
聲明中。
public static <E extends Comparable<? super E>> int bisect_right(List<E> list, E x) {
( <E extends Comparable<E>>
似乎在這里也適用。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.