泛型
1.泛型的基本使用
限制集合存储的数据类型
package com.lu.day07.generics;
/**
* 定义了一个泛型类
* E 泛型通配字母(不固定代替真实数据类型A-Z都可以)
* 常见的泛型通配字母:
* E:element 元素
* T:type 类型
* R:return 返回值类型
* K:key 键
* v: value 值
* 子类一旦指定泛型父类用的也是子类的泛型
* @param <E>
*/
public class Date<E> {
private E date;
public E getDate() {
return date;
}
public void setDate(E date) {
this.date = date;
}
public static void main(String[] args) {
Date<String> a = new Date<>();
a.setDate("我是你爸爸");
String date = a.getDate();
System.out.println(a.getDate());
Date<Integer> b = new Date<>();
b.setDate(123);
Integer date1 = b.getDate();
System.out.println(date1);
}
}
Set
1.set集合的概念
2.HashSet的基本使用
package com.lu.day07.setdome;
import java.util.HashSet;
import java.util.Objects;
public class SetDome {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("张三");
set.add("张三");
set.add("王二");
set.add("劳模");
set.add("小李");
System.out.println(set);
//HashSet自定义对象想要去重必须重写 equals 和 hashCode 方法
HashSet<Teacher> t = new HashSet<>();
t.add(new Teacher("张老师","男","教师"));
t.add(new Teacher("张老师","男","教师"));
t.add(new Teacher("王老师","女","幼师"));
t.add(new Teacher("李老师","男","主任"));
System.out.println(t);
//为什么重写 equals 必须重写 hashCode?
//hash(哈希):是由hash算法对任意的输入产生一个整数,并且是固定的
//哈希碰撞:同一个输入产生的hash值永远一样,但是不同的输入生成的hash值可能一样
//hash如果内容一样就生成一样的hash值但是(如果内容相同)hash值可能相同这时候就需要equals进行比较了
//如果两个对象根据 equals 方法认为是相等的,那么它们必须有相同的 hashCode 值。
//如果两个对象 hashCode 值相等,它们未必 equals 相等,但如果 hashCode 不相等,它们一定不相等。
String a = "a";
String b = "b";
System.out.println(Objects.hashCode(a));
System.out.println(Objects.hashCode(b));
}
}
package com.lu.day07.setdome;
import java.util.Objects;
public class Teacher {
private String name;
private String sex;
private String job;
public Teacher() {
}
public Teacher(String name, String sex, String job) {
this.name = name;
this.sex = sex;
this.job = job;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
@Override
public String toString() {
return "Teacher{" +
"name