Сортировка массива не работает, нет экземпляра (ов) переменной (ов) T, так что Employee соответствует Comparable - PullRequest
2 голосов
/ 09 января 2020

Я создал эту программу. Я пытаюсь заставить это сортировать мой список, но это не будет сортировать. Я включил основную программу, а также мой класс сотрудников.

t выплевывает это, когда я пытаюсь его отсортировать:

sort (java .util.list) в коллекциях нельзя применить к (java .util.ArrayList )

Вот код ошибки, который мне дан: ни одного экземпляра (ов) переменной (ей) T не существует, поэтому Employee соответствует Comparable<? super T>

import java.util.*;
import java.lang.*;

public class Employee {
    String name;

    public Employee(String name) {
        this.name = name;
    }

    // Used to print student details in main()

    public String toString() {
        return this.name;
    }
}


public class Schedule {
    public static void main (String args[] ) {

        ArrayList<Employee> listOfEmployees = new ArrayList<Employee>();

        listOfEmployees.add(new Employee("Lauren"));
        listOfEmployees.add(new Employee("Greg"));
        listOfEmployees.add(new Employee("Brenda"));
        listOfEmployees.add(new Employee("Derek"));
        listOfEmployees.add(new Employee("Brittany"));

        System.out.println("Unsorted");


        for (int i=0; i<listOfEmployees.size(); i++) {

            System.out.println(listOfEmployees.get(i));
        }

        Collections.sort(listOfEmployees);

        System.out.println("Sorted Alphabetically");

        for (int i=0; i<listOfEmployees.size(); i++) {
            System.out.println(listOfEmployees.get(i));
        }
    }

}

enter image description here

Ответы [ 3 ]

6 голосов
/ 09 января 2020

Вам необходимо реализовать Comparable интерфейс и переопределить его compareTo метод следующим образом:

public class Employee implements Comparable<Employee> {
    String name;

    public Employee(String name) {
        this.name = name;
    }

    public String toString() {
        return this.name;
    }

    @Override
    public int compareTo(Employee employee) {
        return this.name.compareTo(employee.name);
    }
}

А если вы не хотите реализовывать Comparable интерфейс, то вам нужно создать пользовательский Comparator как следующий:

Comparator<Employee> employeeNameComarator = new Comparator<Employee>() {
    @Override
    public int compare(Employee employee1, Employee employee2) {
        return employee1.name.compareTo(employee2.name);
    }
};

И передать объект компаратора при сортировке как:

Collections.sort(listOfEmployees, employeeNameComarator);
0 голосов
/ 09 января 2020

Вам необходимо реализовать интерфейс Comparable, чтобы использовать Collections.sort (). Пожалуйста, от go до oracle документов для получения дополнительной информации:

https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort (java .util.List)

0 голосов
/ 09 января 2020

Вы также можете использовать Comparator.

listOfEmployees.sort(Comparator.comparing(Employee::getName));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...