某个班级的全体同学要投票选班长

某个班级的全体同学要投票选班长,每名同学在选票上填写一名推荐人选姓名。请编写程序,输入班级每个同学选票上的推荐人选姓名,程序统计每个推荐人选的得票数,并按得票数由大到小排序输出所有推荐人选姓名及其得票数。(提示:可以分两步完成。一是统计每个推荐人选的得票数;二是由大到小排序输出。可以把推荐人选姓名和得票数存放到集合对象中,然后用Collections.sort()方法排序。)

仅供参考:


public static void main(String[] args) {
        System.out.print("请输入班级人数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        String name;
        List<Person> people = new ArrayList<>();
        Person person;
        scanner.nextLine();
        for (int i = 0; i < num; i++) {
            System.out.print("请输入要投取人的姓名:");
            name = scanner.nextLine();
            person = new Person(name);
            if (people.contains(person)) {
                Person person1 = (Person) people.get(people.indexOf(person));
                person1.setNum();
            } else {
                people.add(person);
                person.setNum();
            }
        }
        scanner.close();
        Collections.sort(people);
        for (Person person1 : people) {
            System.out.println(person1);
        }
    }

public class Person implements Comparable {

    private String name;

    private int num = 0;

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

    public int getNum() {
        return num;
    }

    public void setNum() {
        num++;
    }

    public int compareTo(Person o) {
        return -Integer.compare(this.num, o.num);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Person person = (Person) o;
        return Objects.equals(name, person.name);
    }

    @Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public String toString() {
        return name +":"+ num +"票";
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, num);
    }

}