Я пытаюсь отсортировать значения двух LinkedHashMap. Я могу скомпилировать его и просто выполнить код, но он говорит мне использовать опцию -Xlint во время компиляции, потому что это небезопасный код. Это как-то связано с типами приведения типов, но я по-королевски растерялся, как это сделать. Я получил этот класс, который я положил в своем классе:
static class MyComparator implements Comparator {
public int compare(Object obj1, Object obj2){
int result=0;
Map.Entry e1 = (Map.Entry)obj1 ;
Map.Entry e2 = (Map.Entry)obj2 ;//Sort based on values.
Integer value1 = (Integer)e1.getValue();
Integer value2 = (Integer)e2.getValue();
if(value1.compareTo(value2)==0){
String word1=(String)e1.getKey();
String word2=(String)e2.getKey();
//Sort String in an alphabetical order
result=word1.compareToIgnoreCase(word2);
} else {
//Sort values in a descending order
result=value2.compareTo( value1 );
}
return result;
}
}
Я попытался вызвать его в одной из своих функций с помощью:
ArrayList myArrayList=new ArrayList(this.map_freq_by_date.entrySet());
Collections.sort(myArrayList, new MyComparator());
Iterator itr=myArrayList.iterator();
Примечание: this.map_freq_by_date определяется следующим образом:
Map<String,Integer> map_freq_by_date = new LinkedHashMap<String,Integer>();
Ошибка, которую я получаю с опцией -Xlint:
unchecked call to ArrayList(java.util.Collection<? extends E>) as a member of the raw type java.util.ArrayList
ArrayList myArrayList=new ArrayList(this.map_freq_by_date.entrySet());
unchecked conversion
found LogGrep.MyComparator
required: java.util.Comparator(? super T>
Collections.sort(myArrayList, new MyComparator());
unchecked method invocation: <T>sort(java.util.List<T>,java.util.Comparator<? super T> in java.util.Collections is applied to (java.util.ArrayList,LogGrep.MyComparator)
Collections.sort(myArrayList, new MyComparator());
Помощь в том, как это исправить, будет признателен. Я посмотрел в Интернете и попробовал все, что было показано, но я не могу понять, как это правильно.
Примечание: если я поставлю ArrayList<Object> myArrayList = new ArrayList<Object>
... ошибка изменится на:
unchecked method invocation <T>sort(java.util.List<T>,java.util.Comparator<> super T?) in java.util.Collections is applied ot (java.util.ArraList<java.lang.Object>,LogGrep.MyComparator)
Collections.sort(myArrayList, new MyComparator());