Java集合排序的绑定不匹配
您需要有关java集合排序的帮助。 它给了我这个错误:
Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (List). The inferred type WifiSSID is not a valid substitute for the bounded parameter <T extends Comparable>
我的代码看起来像:
public class WifiSSID { public String SSIS; public double id; } public class ScanFilterWifiList { public ScanFilterWifiList(List wifiList) { Collections.sort(wifiList); //Collections.sort(wifiList, new SortSSIDByid()); tried this also. } } interface Comparator { int compare(WifiSSID obj1, WifiSSID obj2); } class SortSSIDByid implements Comparator { @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; } }
我做错了吗?
您无法对未实现Comparable
接口的对象列表进行排序。 或者更确切地说,您可以,但您必须为Collections.sort()
方法提供Comparator
。
想一想: Collections.sort()
如何在不知道WifiSSID何时小于或大于另一个的情况下对列表进行排序?
你想使用Collections.sort(wifiList, new SortSSIDByid());
编辑:
您定义了自己的专有Comparator
接口,并在SortSSIDByid
实现了这个专有的Comparator接口。 Collections.sort()
需要java.util.Comparator
的intance。 它不是您的专有Comparator接口的实例,它不知道。
只需添加此导入import java.util.Comparator;
并删除此界面
interface Comparator { int compare(WifiSSID obj1, WifiSSID obj2); }
您的SortSSIDByid
比较器类现在将实现java.util.Comparator
,这是Collections.sort()
方法所需的。