2014-11-05 2 views
-1

Я хочу отсортировать ArrayList по размеру File s, содержащемуся в нем.ArrayList <File> Сортировка по файлу.length()

public class ArraySorting implements Comparator<File> { 

    public ArraySorting() { } 

    public ArrayList<File> sort(ArrayList<File> arrayOfFiles) { 
     Arrays.sort(arrayOfFiles, new ArraySorting()); 
     return arrayOfFiles; 
    } 

    public int compare(File a, File b) { 
     long aSize = a.length(); 
     long bSize = b.length(); 
     if (aSize < bSize) { 
      return -1; 
     } 
     else if (aSize > bSize) { 
      return 1; 
     } 
     else { 
      return 0; 
     } 
    } 
} 

я получил ошибку:

The method sort(T[], Comparator) in the type Arrays is not applicable for the arguments (ArrayList, ArraySorting).

+0

Вы используете Collections.sort (...)? – nafas

+0

«ArrayList» - это список, а не массив! Используйте 'Collections.sort (arrayOfFiles, new ArraySorting())'. – Seelenvirtuose

+0

Пробовал ли вы ошибаться в своей ошибке? http://stackoverflow.com/questions/12889314/comparator-wont-work-with-arrays-sort –

ответ

4

Arrays.sort ожидает массив. Используйте Collections.sort, чтобы отсортировать List.

public ArrayList<File> sort(ArrayList<File> arrayOfFiles) 
{ 
    Collections.sort(arrayOfFiles, new ArraySorting()); 
    return arrayOfFiles; 
} 
+0

Спасибо, мне это помогает. –

Смежные вопросы