我正在尝试在自定义对象的ArrayList上使用Collections.sort,但我收到警告,我无法弄清楚为什么
Warning: Type safety: Unchecked invocation
sort(ArrayList<CharProfile>) of the generic method sort(List<T>)
of type Collections
使用此代码:
ArrayList<CharProfile> charOccurrences = new ArrayList<CharProfile>();
...
Collections.sort(charOccurrences);
这是我的方法:
public class CharProfile implements Comparable {
...
@Override
public int compareTo(Object o) {
if (this.probability == ((CharProfile)o).getProbability()) {
return 0;
}
else if (this.probability > ((CharProfile)o).getProbability()) {
return 1;
}
else {
return -1;
}
}
}
答案 0 :(得分:23)
Comparable应该用type实现,这里Type是<CharProfile>
。
public class CharProfile implements Comparable<CharProfile>{
@Override
public int compareTo(CharProfile cp) {
...
}
}
答案 1 :(得分:1)
您使用的是泛型,因此请将传递给方法的类型CharProfile
而不是Object
。
我还建议重新安排比较,如果概率是双倍。
@Override
public int compareTo(CharProfile o) {
if (this.probability < o.getProbability()) {
return -1;
}
else if (this.probability > o.getProbability()) {
return 1;
}
else {
return 0;
}
}
答案 2 :(得分:-2)
注意到已经回答了,但无论如何这是我的输入:)
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
public class CharProfile implements Comparable <CharProfile>{
public void doStuff(){
List<CharProfile> charOccurrences = new ArrayList<CharProfile>();
Collections.sort(charOccurrences);
}
@Override
public int compareTo(CharProfile o) {
return -1;
}
}