Stack 栈 使用泛型 案例:
import java.util.ArrayList; import java.util.Iterator; import java.util.linkedList; public class MyStack{ linkedList sd=new linkedList<>(); public void pull(T t) { sd.addFirst(t); } public void peek() { sd.removeFirst(); } public static void main(String[] args) { MyStack MH=new MyStack<>(); for (int i = 0; i < 10; i++) { MH.pull(new Hero("hero-"+i)); } MH.peek(); System.out.println("Hero Class:"+MH.sd); MyStack hight=new MyStack<>(); for (int i = 0; i < 10; i++) { hight.pull(new Hight("Hight-"+i)); } hight.peek(); System.out.println("Hight Class:"+hight.sd); } }
实质为 在MyStack< T > 该类设计的时候,在类的声明上,加上一个< T >,表示该类支持泛型。
如果不添加,那么你在用该类实例化对象的时候 就只能对一种类进行入栈 *** 作 也就是主函数只能 *** 作一种 要想实现另一种 只得新建类
因此添加泛型 可以在主函数 多次实例化不同类型的对象 节省时间
二叉树:
二叉树使用泛型 和之前的代码相差无几 值得注意的是 泛型的添加 实质也是控制了类的类别
案例:
import java.util.*; public class Node{ public Node leftNode; public Node rightNode; public T value; public void add(T v) { if(value==null) value=v; else { if((Integer)v<=(Integer)value) { if(leftNode==null) leftNode=new Node(); leftNode.add(v); } else { if(rightNode==null) rightNode=new Node(); rightNode.add(v); } } } public List ordered() { List sd=new ArrayList<>(); if(leftNode!=null) sd.addAll(leftNode.ordered()); sd.add(value); if(rightNode!=null) sd.addAll(rightNode.ordered()); return sd; } public static void main(String[] args) { Node no=new Node<>(); for (int i = 0; i < 10; i++) { no.add((int)(Math.random()*100)); } System.out.println(no.ordered()); } }
比如public T value; 这里的对于真值的定义 value的类类型就是你所指定的泛型的类类型了 方便之处也同与Stack 一致
其他:
public Class getClazz() 这一句前一个T规定了什么类型的类才可以调用这个方法,后一个T规定了返回值类型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)