操作类:
public class MainC10 <T>{
public T T[];
public T[] init(T...arg) {
return arg;
}
public int search(T T[],T t) {
int n=-1;
for(int i = 0; i < T.length; i++) {
if(T[i].equals(t)) {
n = i;
}
}
return n;
}
public void print(T T[]) {
for(int i = 0; i < T.length; i++) {
System.out.print(T[i]+" ");
}
}
}
主类:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
MainC10<Object> mc = new MainC10<Object>();
mc.T = mc.init("my","age","is",20);
mc.print(mc.T);
Scanner sc = new Scanner(System.in);
int n;
Object findelem;
findelem = sc.next();
n = mc.search(mc.T, findelem);
if(n==-1) {
System.out.println("未找到该元素");
}else {
System.out.println("该元素位于T["+n+"]");
}
}
}
存储各种类型的数据没有问题。
有一个问题是在输入元素查找元素那里。我设置输入的数组类型是Object(这样就能输入各种类型的数据了),但sc.next()
会将所有元素变为String类型,因此找不到“20”这个Integer类型数据。
解决方案一:
在搜索时将所有数据类型转变为String类型进行比对。
public int search(T T[],T t) {
int n=-1;
for(int i = 0; i < T.length; i++) {
String temp;
temp = T[i].toString();
if(temp.equals(t)) {
n = i;
}
}
return n;
}
这道题一定还有很多种解决方法,我的方法算不上是最简便的,期待大家会有更好的方法一起讨论分享😊