您需要有关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; } }
我做错什么了吗?
您不能对未实现该Comparable接口的对象列表进行排序。或者说,可以,但你必须提供Comparator的Collections.sort()方法。
Comparable
Comparator
Collections.sort()
考虑一下:如何Collections.sort()在不知道WifiSSID小于或大于另一个WifiSSID的情况下对列表进行排序?
你想用 Collections.sort(wifiList, new SortSSIDByid());
Collections.sort(wifiList, new SortSSIDByid());
编辑:
您定义了自己的专有Comparator接口,并在中实现了该专有Comparator接口SortSSIDByid。Collections.sort()想要一个实例java.util.Comparator。它不是您不知道的专有Comparator接口的实例。
SortSSIDByid
java.util.Comparator