添加重复数据

添加重复数据

package com.imooc.test;

public class Student {
private String name;
private int stuld;
private float score;

public Student() {

}

public Student(String name, int stuld, float score) {
this.setName(name);
this.setStuld(stuld);
this.setScore(score);
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getStuld() {
return stuld;
}

public void setStuld(int stuld) {
this.stuld = stuld;
}

public float getScore() {
return score;
}

public void setScore(float score) {
this.score = score;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + stuld;
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj.getClass() == Student.class) {
Student student = (Student) obj;
return student.getStuld() == stuld && (student.getName().equals(name));
}
return false;

}

@Override
public String toString() {
return "[学号:" + this.getStuld() + ", 姓名:" + this.getName() + ", 成绩:" + this.getScore() + "]";
}

}
package com.imooc.test;
问题描述:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class StudentTest {

public static void main(String[] args) {
// TODO 自动生成的方法存根
Student student3 = new Student("William", 3, 65.0f);
Student student1 = new Student("Tom", 1, 87.0f);
Student student2 = new Student("Lucy", 2, 95.0f);
Set<Student> set = new HashSet<Student>();
set.add(student1);
set.add(student2);
set.add(student3);
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("=========================");
Student student4 = new Student("Lucy", 3, 954.0f);
Student student5 = new Student("William", 3, 65.0f);
set.add(student4);
set.add(student5);
it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}

问题描述:

这个判断是否重复是当学号和姓名都重复时才进行判定重复,单独判断学号或者姓名重复怎么写

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、是的,理解是正确的

2、这里只需要对equals()和hashCode()方法进行删减即可,如下举例:判断姓名

http://img1.sycdn.imooc.com//climg/601b6b17090f2e4609160500.jpg

祝学习愉快~

  • 如果要是当学号重复,姓名不同时,不显示信息,姓名重复时学号不重复也不显示信息,也不显示信息,该怎么写呢老师
    2021-02-04 11:46:16
  • 同学你好,同学这里是想学号(或姓名)重复时,重复数据不进行添加显示是吗?

    如果是,按照老师上述给出的方式去修改equals()和hashCode()方法即可,如下:

    http://img1.sycdn.imooc.com//climg/601ba1f909c4abb008140871.jpg

    http://img1.sycdn.imooc.com//climg/601ba28a09af226e09340869.jpg

    祝学习愉快~

    2021-02-04 15:30:36
  • 我明白老师的意思,但这是两段程序,如果在一段程序中,怎么写同时满足这两个,就是如果要是当学号重复,姓名不同时,不显示信息,姓名重复时学号不重复也不显示信息,也不显示信息,

    2021-02-05 08:15:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师