簡體   English   中英

Collections.binarySearch的通用列表參數錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM