2011-12-15 5 views
1

я должен заказать коллекцию, и я использую компараторкомпаратора не нашел

import java.util.*; 

public class OpereComparatorAuthor implements Comparator<Opera>{ 

    public int compare(Opera left,Opera right){  
     return left.getArtist().compareTo(right.getArtist()); 
    } 
} 

но когда я называю это из другого класса:

Collections.sort(ordbyauthor,OpereComparatorAuthor); 

Я получаю эту ошибку:

cannot find symbol 
symbol : variable OpereComparatorAuthor 
location: class Museo 
    Collections.sort(ordbyauthor,OpereComparatorAuthor); 

Почему?

+0

Вы упомянули Саллу в комментарии. Каковы отношения между Opera и Salla? Кроме того, напишите больше кода о том, как вы вызываете сортировку, включая определение списка – Bohemian

ответ

3

Вы должны передать объект компаратора:

Collections.sort(ordbyauthor, new OpereComparatorAuthor()); 

Update:

Это просто предложение. Вместо определения класса используйте анонимный класс (который я считаю хорошим кандидатом) для такого рода ситуаций.

например.

//I am using Sala here instead of Opera as per your comment 
Collections.sort(ordbyauthor, new Comparator<Sala>(){ 
    @Override 
    public int compare(Sala left, Sala right) { 
     //do your comparision here according to your requirement 
     //then return the result 
    } 
}); 
+0

после создания объекта. Я получаю сообщение об ошибке: не могу найти символ символ: метод sort (java.util.LinkedList , OpereComparatorAuthor) местоположение : class java.util.Collections \t \t Collections.sort (ordbyauthor, новый OpereComparatorAuthor()); – Mazzy

+0

Как вы объявляете 'ordbyauthor'? Этот компаратор не для 'Sala', это для' Opera', поскольку у вас есть 'реализует Comparator '. Вы передаете список 'Сала' и' Компаратор' для 'Opera'. Список и компаратор должны быть для одного и того же типа либо для «Сала», либо для «Opera». –

+1

Ваш компаратор - это компаратор . Он сравнивает экземпляры Opera. Вы пытаетесь использовать его для сортировки списка . Используйте Comparator для сравнения экземпляров Sala. –