自己写简单的LinkedList
来源:互联网 发布:股票资产分析软件 编辑:程序博客网 时间:2024/05/01 23:04
最近复习基础知识,看了下LinkedList源码,决定自己也写写,当然方法不多,只是个简化版。
package 集合;public class MyLinkList {private transient int size = 0;private transient Node first;private transient Node last;public MyLinkList() {}/** * 返回List的大小 * @return size List的大小 */public int size() {return size;}/** * 添加元素 * @param obj 元素 */public void add(Object obj){Node node=new Node();node.obj=obj;if(first==null){node.previous=null;node.next=null;first=node;last=node;}else{node.previous=last;node.next=null;last.next=node;last=node;}size++;}/** * 根据索引获取该元素 * @param index 索引 * @return Object */public Object get(int index){checkRange(index);if(index<(size>>1)){Node temp=first;for(int i=0;i<index;i++) temp=temp.next;return temp.obj;}else{Node temp=last;for(int i=size-1;i>index;i--) temp=temp.previous;return temp.obj;}}/** * 根据内容删除元素 * @param obj 元素内容 * @return boolean */public boolean remove(Object obj){if(obj==null){for(Node node=first;node!=null;node=node.next){if(node.obj==null){RedirectPoint(node);return true;}}return false;}else{for(Node node=first;node!=null;node=node.next){if(obj.equals(node.obj)){RedirectPoint(node);return true;}}return false;}}/** * 根据索引删除元素 * @param index 元素的索引 * @return boolean */public Object remove(int index){checkRange(index);if(index<(size>>1)){Node node=first;for(int i=0;i<index;i++){node=node.next;}Object obj=node.obj;RedirectPoint(node);return obj;}else{Node node=last;for(int i=size-1;i>index;i--){node=node.previous;}Object obj=node.obj;RedirectPoint(node);return obj;}}/** * 查找元素的索引,只返回元素第一次出现的索引,若没有该元素则返回-1; * @param Object 要查找的元素 */public int find(Object obj){int index=0;if(obj==null){for(Node node=first;node!=null;node=node.next){if(node.obj==null) return index;index++;}}else{for(Node node=first;node!=null;node=node.next){if(obj.equals(node.obj))return index;index++;}}return -1;}//检查索引是否越界private void checkRange(int index){if(index>=size||index<0){try{throw new Exception();}catch(Exception e){System.out.println("数组越界,请检查索引是否超出列表的大小");e.printStackTrace();}}}//删除的内部操作,指针重定向private void RedirectPoint(Node node){Node up=node.previous;Node down=node.next;up.next=down;down.previous=up;size--;}//MylinkList的内部类private class Node{Object obj;Node previous;Node next;Node(){}}}
0 0
- 自己写简单的LinkedList
- 自己写一个简单的LinkedList
- 自己写的一个linkedList
- 自己写LinkedList GoLinkedList
- 自己写简单的SqlHelper
- 自己写的简单计算器
- 自己写的简单HttpClient
- java8集合框架LinkedList类实现自己简单的理解
- 编写自己的LinkedList
- 实现自己的LinkedList
- 自己实现的LinkedList
- 自己写的HibernateTemplate,简单版的
- 自己写的超级简单的菜单
- 自己写的简单的arraylist
- 自己写简单的RobotFramework的Library
- 自己写的一个简单的basedao
- 自己写的一个简单的资源管理器
- 自己写的简单测试类
- 二叉排序树(新建,插入,查找,删除)(C语言编写)
- 解决pip install国外源太慢的问题
- [Android]安全第一步,使用IDA初步调试一个c/c++的exe文件
- 线性代数学习笔记4
- linux的用户安装目录
- 自己写简单的LinkedList
- pip网络超时解决办法
- Gdal库读取和生成图像数据
- TCP四次握手断开连接
- Android建造者模式
- ES单播发现主节点配置如下:
- 南阳oj 791 Color the fence
- phpstorm 界面设置
- spring注入elasticsearch