小编典典

Java集合排序的绑定不匹配

java

您需要有关Java集合排序的帮助。它给了我这个错误:

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<WifiSSID>). 
The inferred type WifiSSID is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>

我的代码如下:

public class WifiSSID {

    public String SSIS;
    public double id;
}


 public class ScanFilterWifiList {

    public ScanFilterWifiList(List<WifiSSID> wifiList) {
        Collections.sort(wifiList);
           //Collections.sort(wifiList, new SortSSIDByid()); tried this also.
    }
}
interface Comparator<WifiSSID>
{
    int compare(WifiSSID obj1, WifiSSID obj2);
}

class SortSSIDByid implements Comparator<WifiSSID>
{
    @Override
    public int compare(WifiSSID ssid1, WifiSSID ssid2) 
    {
        int value = 0; 
        if (ssid1.id > ssid2.id) 
            value = 1; 
        else if (ssid1.id < ssid2.id) 
            value = -1; 
        else if (ssid1.id == ssid2.id) 
            value = 0; 
        return value; 
     }
}

我做错什么了吗?


阅读 267

收藏
2020-11-23

共1个答案

小编典典

您不能对未实现该Comparable接口的对象列表进行排序。或者说,可以,但你必须提供ComparatorCollections.sort()方法。

考虑一下:如何Collections.sort()在不知道WifiSSID小于或大于另一个WifiSSID的情况下对列表进行排序?

你想用 Collections.sort(wifiList, new SortSSIDByid());

编辑:

您定义了自己的专有Comparator接口,并在中实现了该专有Comparator接口SortSSIDByidCollections.sort()想要一个实例java.util.Comparator。它不是您不知道的专有Comparator接口的实例。

2020-11-23