这么写对不对?为什么是按成绩从大到小排列显示的?
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 星