Java学习日记——链表全攻略(超详细注释)

关键字:链表,数据结构,接口,内部类,泛型,私有属性,构造方法

最近复习了一遍Java的基础知识,正好使用这个算法经典案例来练习一下,接下来代码中会用到大部分的基础知识,作为Java基础的总结。

接口定义所有方法的标准

要求一个IList接口规范需要实现的方法,使用泛型定义类型,要求的实现的方法有:
	1.数据增加
	2.获取集合个数
	3.空集合判断
	4.返回集合数据
	5.根据索引取得数据
	6.修改指定索引数据
	7.判断数据是否存在
	8.数据删除
	9.清空链表
interface IList<E>{
   
	public void add(E data) ;//增加数据
	public int getSize() ;//获取集合个数
	public boolean isEmpty() ;//判断是否是空集合
	public Object[] toArray () ;//获取对象数组
	public E getData(int index) ;//通过索引获取数据
	public void setData(int index , E data) ;//根据索引修改相应位置的数据
	public boolean contains(E data) ;//判断数据是否存在
	public void remove(E data) ;//数据删除
	public void clean() ;//清空整个链表
}

接口实现类

将链表的节点定义为一个内部类,方便访问其私有属性。

class ListImpl<E> implements IList<E>{
   
	private class Node{
   
		private E data ;
		private Node next ;

		public Node(E data){
   
			this.data = data ;
		}
		/**
		 * 处理外部类提交的新节点,判断root节点之后是否为空;
		 * 若不为空则循环调用此方法直到找到合适的位置;
		 * @param newNode [待存放的新节点]
		 */
		public void addNode(Node newNode){
   
			if(this.next == null)
				this.next = newNode ;
			else
				this.next.addNode(newNode) ;
		}
		/**
		 * 将调用此方法的节点的数据传入,外部类中的returnData[]属性
		 * 如果此节点的next属性不为空则递归调用此方法
		 */
		public void toArrayNode(){
   
			ListImpl.this.returnData[ListImpl.this.foot++] = this.data ;
			if(this.next != null)
				this.next.toArrayNode() ;
		}

		/**
		 * 外部类中从根节点开始调用此方法;
		 * 如果此时的脚标与传入的索引值相同就返回此节点的data属性值
		 * 每次递归调用此方法时将脚标自增1
		 * @param  index [待取得数据的索引值]
		 * @return data   [索引处的数据]
		 */
		public E getNode
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值