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