这么写对不对?为什么是按成绩从大到小排列显示的?
package heshset; public class Student { // 根据需求完成Student类的定义 private int stuld;// 学号 private String name;// 姓名 private float score;// 成绩 public Student() { } public Student(int stuld, String name, float score) { super(); this.stuld = stuld; this.name = name; this.score = score; } public int getStuld() { return stuld; } public void setStuld(int stuld) { this.stuld = stuld; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getScore() { return score; } public void setScore(float score) { this.score = score; } @Override public String toString() { return "[学号:" + stuld + ", 姓名:" + name + ", 成绩:" + score + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + stuld; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + Float.floatToIntBits(score); return result; } // @Override public boolean equals(Object obj) { if (this == obj) return true; if(obj.getClass()==Student.class) { Student c=(Student) obj; return c.getName().equals(name)&&(c.getStuld()==stuld) &&(c.getScore()==score); } return false; } }
package heshset; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class StudentTest { public static void main(String[] args) { //定义三个Student类的对象及一个HashSet类的对象 Student one=new Student(3,"William",65); Student two=new Student(1,"Tom",87); Student three=new Student(2,"Lucy",95); //将Student类的对象添加到集合中 Set a=new HashSet(); a.add(one); a.add(two); a.add(three); //使用迭代器显示Student类的对象中的内容 Iterator b=a.iterator(); while(b.hasNext()) { System.out.println(b.next()); } //添加一个重复数据到Set中,观察输出结果 Student one1=new Student(3,"William",65); a.add(one1); System.out.println("**************************************"); b=a.iterator(); while(b.hasNext()) { System.out.println(b.next()); } } }
这么写对不对?为什么输出是按成绩从大到小排列显示的?是自动默认成绩从大到小排序吗?怎么样才能输出效果图那样成绩从小到大的排序!
2
收起
正在回答
1回答
首先代码是对的哦,关于输出会排序的问题我试了一下,结果是和你一样的,但是当我把集合里个数增加时,输出就不再是有序的了。查阅了一下网上的相关资料,应该是我们存储的时候Java会根据一定的hash算法获取hashCode,然后按照这个值存储。另外注意有序输出和有序存储是不一样的,老师所说的Set是无序的,指的应该是无序存储,比如我们输入【2,1,3】,如果输出也是【2,1,3】,这样才是有序,而输出【1,2,3】相对于我们的输入顺序他就是无序的,因此Set还是无序的。
不知道理解的对不对,还是请老师解答~~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星