Java实现链表中元素的获取、查询和修改方法详解
本文实例讲述了Java实现链表中元素的获取、查询和修改方法。分享给大家供大家参考,具体如下:
本节是在上一小节Java链表中添加元素的基础上继续完善我们的链表相关方法的编写,在本节中我们着重对如何获取链表中元素、查询元素以及修改元素进行学习。
一、获取元素
1.关于获取链表中元素的方法的分析
由于我们使用了虚拟头结点,而我们每次都需要从第一个真实节点开始,因此需要首先得到虚拟头结点的下一个节点是谁,然后在此基础上进行遍历工作,相关代码如下:
//获取链表的第index(0-based)个位置的元素(实际不常用,练习用) publicEget(intindex){ //合法性判断 if(index<0||index>=size){ thrownewIllegalArgumentException("Getfailed,Illegalindex"); } Nodecur=dummyHead.next; for(inti=0;i 2.获得链表的第一个元素
对于该方法则是依靠在get()方法的。
//获得链表的第一个元素 publicEgetFirst(){ returnget(0); }3.获得链表的最后一个元素
对于该方法页是依靠在get()方法的。
//获得链表的最后一个元素 publicEgetLast(){ returnget(size-1); }二、修改链表元素
由于我们使用了虚拟头结点,而我们每次都需要从第一个真实节点开始,因此需要首先得到虚拟头结点的下一个节点是谁,然后在此基础上进行遍历工作,相关代码如下:
//修改链表的第index(0-based)个位置的元素(实际不常用,练习用) publicvoidset(intindex,Ee){ //合法性判断 if(index<0||index>=size){ thrownewIllegalArgumentException("updatefailed,Illegalindex"); } Nodecur=dummyHead.next; for(inti=0;i 三、判断是否有元素e
由于我们使用了虚拟头结点,而我们每次都需要从第一个真实节点开始,因此需要首先得到虚拟头结点的下一个节点是谁,然后判断给定的元素值与链表中的元素值内容是否相等(equals()方法),若相等则返回true,否则返回false。
//查找链表中是否有元素e publicbooleancontains(Ee){ Nodecur=dummyHead.next; while(cur!=null){ if(cur.e.equals(e)){ returntrue; } cur=cur.next; } returnfalse; } 四、toString()方法的重写
为了在输出该链表对象时可以查看相关自定义的信息,我们对toString()进行重写改造。
//重写object类,便于测试 @Override publicStringtoString(){ StringBuilderres=newStringBuilder(); Nodecur=dummyHead.next; while(cur!=null){ res.append(cur+"->"); cur=cur.next; } res.append("NULL"); returnres.toString(); } 此时该方法等同于
//重写object类,便于测试 @Override publicStringtoString(){ StringBuilderres=newStringBuilder(); for(Nodecur=dummyHead.next;cur!=null;cur=cur.next){ res.append(cur+"->"); } res.append("NULL"); returnres.toString(); } 五、测试
新建一个main函数,填写相关测试代码如下:
packageLinkedList; publicclassTestMain{ publicstaticvoidmain(String[]args){ LinkedListlinkedList=newLinkedList (); System.out.println("============在链表头部添加============"); for(inti=0;i<5;i++){ linkedList.addFirst(i); System.out.println(linkedList); } System.out.println("============修改链表============"); linkedList.set(2,666); System.out.println(linkedList); } } 结果为:
结果分析:由于是在链表头部添加元素,故最终显示结果为从右到左,最右为NULL(也就是最后一个节点)。
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。