目前还处于java基础学习阶段,关于Set集合只会用HashSet,但是出于作业题目的需要自己尝试用了一下TreeSet,它有个好处就是可以自动为数据排序,而源码是用compareTo来实现的。
实践题目:创建学生对象,按照工资从高到底排序输出结果(工资相同,按照年龄从低到高,工资和年龄都相同,按照姓名字典顺序排列)。
[size=15.3333px]我的办法是Student类实现Comparable并[size=15.3333px]重写compareTo方法:
[size=15.3333px] @Override
[size=15.3333px] public int compareTo(Student o) {
[size=15.3333px] int num = o.salary-this.salary;//这样可以降序排列
[size=15.3333px] int num2= this.age - o.age;//这样就是升序
[size=15.3333px] if(num == 0) {
[size=15.3333px] if(num2 == 0) {
[size=15.3333px] return this.name.compareTo(o.name);
[size=15.3333px] }
[size=15.3333px] return num2;
[size=15.3333px] }
[size=15.3333px] return num;
[size=15.3333px] }
[size=15.3333px]
[size=15.3333px]测试后可以得到这样的结果:
[size=15.3333px]Student [name=赵六, age=32, salary=9000]
Student [name=李四, age=23, salary=6000]
Student [name=钱七, age=25, salary=6000]
Student [name=孙九, age=21, salary=5000]
Student [name=张三, age=21, salary=5000]
Student [name=王五, age=25, salary=5000]
Student [name=朱八, age=28, salary=3000]
但是TreeSet不能接受三个属性都相同的学生对象(即使不重写hashcode和equals方法),所以会进行自动去重。
关于集合我还需要进行更深入地学习,代码如有错误欢迎指正交流,大家一起学习进步,也希望有高手大佬告诉我更好的方法。
|
|