Сортировка карты с использованием компаратора по значению картыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сортировка карты с использованием компаратора по значению карты

Сообщение Anonymous »

Я не уверен, видел ли я какой-либо ответ, который соответствовал бы моей ситуации, несмотря на кучу ответов для ситуаций, которые похожи.
В любом случае, я новичок в JAVA, поэтому, пожалуйста, будьте снисходительны.
Вот в чем дело:
  • У меня есть класс, который представляет, скажем, человека с именем, которое является строкой.
  • Также у меня есть компаратор (MyComparator), который реализует интерфейс Comparator для Person.
    Конструктор Comparator предполагает, что все сопоставимые объекты (Persons) будут храниться в Map
    .
    В Comparator у меня есть метод int Compare (Person p1, Person p2), который написан следующим образом:

    Код: Выделить всё

    public int compare (Person personOne, Person personTwo) {
    if (personsMap.get(personOne)>personsMap.get(personTwo)) {
    return 1;
    } else if (personsMap.get(personOne)
          return -1;
    } else {
    return 0;
    }
    
Когда я запускаю что-то вроде этого:

Код: Выделить всё

public static void main (String[] args) {
Person p1 = new Person ("Willy");
Person p2 = new Person ("Billy");
Person p3 = new Person ("Dilly");

Map
 t = new HashMap();
t.put(p1,12);
t.put(p2,2);
t.put(p3,100);

List pl = new Arrays.asList(p1,p2,p3);
Collections.sort(pl, new MyComparator(t));
}
Я получаю NPE в MyComparator в следующей строке:

Код: Выделить всё

 if (personsMap.get(p1)>personsMap.get(p2))
Пожалуйста, подскажите, как это исправить.
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/374 ... -map-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»