Java 常见数据结构使用泛型所呈现的便捷之处

Stack 栈 使用泛型 案例:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;



public class MyStack<T>  {
	LinkedList<T> sd=new LinkedList<>();
	public void pull(T t)
	{
		sd.addFirst(t);
	}
	public void peek()
	{
         sd.removeFirst();
	}
	
	public static void main(String[] args) {
		MyStack<Hero> 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> 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<T> {
    public Node<T> leftNode;
    public Node<T> 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<T> ordered() {
           List<T> 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<Integer> 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值