用于java集合排序的绑定不匹配 [英] Bound mismatch for java Collections sorting
问题描述
您需要帮助关于java集合排序。它给我这个错误:
绑定不匹配:类型集合的通用方法sort(List< T>)不适用于参数(List< WifiSSID>)。
推断类型WifiSSID不是有界参数的有效替代< T extends Comparable<?超级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());也试过这个。
}
}
接口比较器< 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;
返回值;
}
}
我做错了什么?
不能对未实现 Comparable
接口的对象列表。或者,您可以,但必须向 Collections.sort()
方法提供 Comparator
。
想想: Collections.sort()
如何排序列表而不知道WifiSSID何时小于或大于
>
编辑:
您定义了自己专有的 Comparator
并在 SortSSIDByid
中实现此专有Comparator接口。 Collections.sort()
需要一个 java.util.Comparator
的内容。不是您的专有Comparator接口的实例,它不知道。
Hi need Help regarding java collection sorting. It gives me this error:
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>>
My code looks like:
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;
}
}
Am I doing anything wrong?
You can't sort a List of objects that don't implement the Comparable
interface. Or rather, you can, but you have to provide a Comparator
to the Collections.sort()
method.
Think about it: how would Collections.sort()
sort your list without knowing when a WifiSSID is smaller or bigger than another one?
You want to use Collections.sort(wifiList, new SortSSIDByid());
EDIT:
You defined your own proprietary Comparator
interface, and implement this proprietary Comparator interface in SortSSIDByid
. Collections.sort()
wants an intance of java.util.Comparator
. Not an instance of your proprietary Comparator interface, that it doesn't know.
这篇关于用于java集合排序的绑定不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!