我被要求创建一个toArray
方法,它应该分别返回一个Iterator或数组,其元素按其“add”计数(HashMap中的值)按升序排序。
但是,我收到以下错误消息,并且不知道如何修复它:
类型集合中的方法sort(List< T>,Comparator<?super T>)不适用于参数(Set< Map.Entry< T,Integer>>,new Comparator< Map.Entry< T,整数>>(){})
所以我似乎必须覆盖或创建排序方法。有人可以帮助我指出正确的方向吗?
public class OccurenceSet<T> implements Set<T>{
private HashMap<T,Integer> data;
public OccurenceSet(){
this.data = new HashMap<T,Integer>();
}
@Override
public Object[] toArray() {
Set<Map.Entry<T,Integer>> dataSet = data.entrySet();
ArrayList<Map.Entry<T,Integer>> dataList = new ArrayList<>(dataSet);
Collections.sort(dataSet, new Comparator<Map.Entry<T,Integer>>() {
@Override
public int compare(Map.Entry<T,Integer> o1, Map.Entry<T, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
return null;
}
}
答案 0 :(得分:2)
HashMap并不是要按排序顺序保留条目,但是如果必须根据键或值对HashMap进行排序,则可以使用Java进行排序。
答案 1 :(得分:2)
&#34;类型集合中的方法sort(List,Comparator)不是 适用于参数(Set&gt;,new Comparator&gt;(){})&#34;
您收到此异常,因为Collections#sort
方法只能接受 List<T>
而不是设置
此处提供更多信息:Collections#sort Method