请按照下列要求编写程序。 (1) 编写一个Student类,包含name和age属性,提供有参构造方法。 (2) 在Student类中,重写toString()方法,输出age和name的值。 (3) 在Student类中,重写hashCode()和equals()方法 a.hashCode()的返回值是name的hash值与age的和。b.equals()判断对象的name和age是否相同,相同则返回true不同返回false。 (4)最后编写一个测试类,创建一个HashSet对象hs,向hs中添加多个Student对象,假设有两个Student对象相等,输出HashSet,观察是否添加成功。 2. 请按照下列提示编写一个泛型接口以及其实现类。 提示: (1)创建一个泛型接口Generic,并创建一个抽象方法get(T t); (2)创建一个实现类GenericImpl,空实现get(T t)方法。
时间: 2024-02-09 14:09:49 浏览: 106
1. Student类的代码如下:
```java
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "name: " + name + ", age: " + age;
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
@Override
public boolean equals(Object obj) {
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Student other = (Student) obj;
return Objects.equals(name, other.name) && age == other.age;
}
}
```
测试类的代码如下:
```java
import java.util.HashSet;
import java.util.Set;
public class TestHashSet {
public static void main(String[] args) {
Set<Student> hs = new HashSet<>();
hs.add(new Student("张三", 20));
hs.add(new Student("李四", 22));
hs.add(new Student("王五", 21));
hs.add(new Student("张三", 20));
System.out.println(hs);
}
}
```
输出结果为:
```
[name: 王五, age: 21, name: 李四, age: 22, name: 张三, age: 20]
```
可以看到,两个姓名为张三,年龄为20的Student对象只添加了一个,说明重写的hashCode()和equals()方法起到了作用。
2. 泛型接口Generic及其实现类GenericImpl的代码如下:
```java
public interface Generic<T> {
void get(T t);
}
public class GenericImpl<T> implements Generic<T> {
@Override
public void get(T t) {
// 实现方法
}
}
```
其中,泛型接口Generic定义了一个抽象方法get,泛型实现类GenericImpl实现了这个方法,具体实现可以根据需求进行编写。
阅读全文