При попытке отсортировать массив на основе его длины строки элемента, я поражен ошибкой компиляции. У меня есть набор, чтобы начать с,,Сортировка строк длиной с использованием компаратора
Set<String> arraycat = new HashSet<String>();
//add contents to arraycat
String[] array = arraycat.toArray(new String[0]);
//array looks like this now:
//array=[cat,cataaaa,cataa,cata,cataaa]
Я бы идеально хотите сортируется
array=[cat,cata,cataa,cataaa,cataaaa]
поэтому у меня есть компаратор типа
class comp implements Comparator {
public int compare(String o1, String o2) {
if (o1.length() > o2.length()) {
return 1;
} else if (o1.length() < o2.length()) {
return -1;
} else {
return 0;
}
}
}
, а затем я называю класс от
Collections.sort(array, new comp());
, но затем, что у меня две ошибки компиляции:
comp is not abstract and does not override abstract method compare(java.lang.Object,java.lang.Object) in java.util.Comparator
class comp implements Comparator {
^
testa.java:59: cannot find symbol
symbol : method sort(java.lang.String[],comp)
location: class java.util.Collections
Collections.sort(array, new comp());
^2 errors
Я был бы признателен за любые ключи, необходимые для решения проблемы.
Hi Lawrence .. спасибо за это .. Это решило первую ошибку компиляции: но у Ive все еще есть другая ошибка компиляции: «не могу найти символ symbol: method sort (java.lang.String [], comp) местоположение: класс java.util.Collections \t \t Коллекции.sort (array, new comp()); «Я импортировал пакет util *, не уверен, почему я получаю эту ошибку – JohnJ
[' sort() '] (http://docs.oracle.com/javase/6/ docs/api/java/util/Collections.html # sort (java.util.List)) принимает массив 'List', а не' String [] '. Используйте [' Arrays.asList() '] (http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList(T ...)), чтобы преобразовать его. –
Кроме того, для более простого компаратора рассмотрим использование ['Integer.signum (int) '] (http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#signum (int)) вместо' if/else-if/else'; например, 'return Integer.signum (o1.length() - o2.length());' –