使用泛型
不可以是基本数据类型,只能是类对象。
基本数据类型如下:
boolean 、byte、char、short、int、long、float、double
每个基本数据类型都有对应的包装类:
Boolean、Byte、Character、Short、Integer、Long、Float、Double
public class LinearSearch {
public static <E>int search(E[]data,E target) {//使用泛型的线性查找方法的实现(泛型只能接受类对象 不可以接受基本数据类型)
for(int i = 0;i<data.length;i++) {
if(data[i].equals(target))//判断数组中元素与查找元素是否相同()不应该使用“==”来判断是否相等,==是判断引用相等的,要判断值相等需要使用equals方法
return i;
}
return -1;
}
public static void main(String[]args) {
Integer []test = {1,2,3,4,5,6,7};//int 类型的包装类
int index1 = search(test,3);
System.out.println(index1);
}
}
对equals方法进行覆盖:(Student类)
public class Student {
private String name;
private int age;
private char sex;
private long studentNumber;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public long getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(long studentNumber) {
this.studentNumber = studentNumber;
}
@Override//覆盖equals方法
public boolean equals(Object student) {//形参为Object类对象
if (this == student)return true;//如果地址相同则返回true
if(this==null)return false;//如果地址为空返回false
if(this.getClass()!=student.getClass())return false;//判断所属类型是否相同进而判断强制转换是否可以成功,失败则返回false
Student another = (Student)student;//强制类型转换
if((this.getName().equals(another.getName())&&this.getAge() == another.getAge())&&(this.getSex() == another.getSex()&&this.getStudentNumber()==another.getStudentNumber()))
return true;
else return false;
}
}
(LineraSearch类)
public class LinearSearch {
public static <E>int search(E[]data,E target) {//使用泛型的线性查找方法的实现(泛型只能接受类对象 不可以接受基本数据类型)
for(int i = 0;i<data.length;i++) {
if(data[i].equals(target))//判断数组中元素与查找元素是否相同()
return i;
}
return -1;
}
public static void main(String[]args) {
Student[] group = new Student[5];//实例化Student对象数组元素个数为5
group[0] = new Student();
group[1] = new Student();
group[2] = new Student();
group[3] = new Student();
group[4] = new Student();
group[0].setName("李秀春");
group[0].setAge(20);
group[0].setSex('男');
group[0].setStudentNumber(20200582);
group[1].setName("张三");
group[1].setAge(20);
group[1].setSex('男');
group[1].setStudentNumber(20200000);
group[2].setName("李四");
group[2].setAge(20);
group[2].setSex('女');
group[2].setStudentNumber(20200582);
group[3].setName("王五");
group[3].setAge(20);
group[3].setSex('男');
group[3].setStudentNumber(20200582);
group[4].setName("赵六");
group[4].setAge(20);
group[4].setSex('男');
group[4].setStudentNumber(20200582);
Student newPerson = new Student();
newPerson.setName("李秀春");
newPerson.setSex('男');
newPerson.setAge(20);
newPerson.setStudentNumber(20200582);
// Integer []test = {1,2,3,4,5,6,7};
// int index1 = search(test,3);
// System.out.println(index1);
int index2 = search(group,newPerson);
System.out.println(index2);
}
}
通过对equals方法进行覆盖实现在Student类对象数组中查找与其元素相同的下标的功能