Problem Description
经过不懈的努力,C~K终于当上了班主任。
现在他要统计班里学生的名单,但是C~K在教务系统中导出班级名单时出了问题,发现会有同学的信息重复,现在他想把重复的同学信息删掉,只保留一个,
但是工作量太大了,所以找到了会编程的你,你能帮他解决这个问题吗?
Input
第一行输入一个N,代表C~K导出的名单共有N行(N<100000).
接下来的N行,每一行包括一个同学的信息,学号 姓名 年龄 性别。
Output
第一行输出一个n,代表删除重复名字后C~K的班级共有几人。
接下来的n行,输出每一个同学的信息,输出按照输入的顺序。
Sample Input
6
0001 MeiK 20 M
0001 MeiK 20 M
0002 sdk2 21 M
0002 sdk2 21 M
0002 sdk2 21 M
0000 blf2 22 F
Sample Output
3
0001 MeiK 20 M
0002 sdk2 21 M
0000 blf2 22 F
package pp; import java.util.*; class Person{ String son, name, sex; int age; public Person(String son, String name, int age, String sex) {//顺序不能错 super(); this.son = son; this.name = name; this.age = age; this.sex = sex; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((sex == null) ? 0 : sex.hashCode()); result = prime * result + ((son == null) ? 0 : son.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex == null) { if (other.sex != null) return false; } else if (!sex.equals(other.sex)) return false; if (son == null) { if (other.son != null) return false; } else if (!son.equals(other.son)) return false; return true; } public String toString() { return son + " " + name + " " + age + " " + sex; } } public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int n = sc.nextInt();//几个人 List<Person> list = new ArrayList<Person>(); while(n-- != 0) { String son = sc.next(); String name = sc.next(); int age = sc.nextInt(); String sex = sc.next(); Person p = new Person(son, name, age, sex); if(!list.contains(p))//排除重复元素 { list.add(p); } } System.out.println(list.size());//个数 Iterator<Person> it = list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } sc.close(); } }
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦