【Java】LinkedList 底层原理,自己实现LinkedList
2018-07-31 14:40
555 查看
[code]package test; /** * 节点的类定义 * @author 袁盛桐 * @version 1.0 */ class Node{ Node previous; Object obj; Node next; } /** * 自己实现一个linkedlist,学习原理和底层实现 * @author 袁盛桐 * @version 1.0 */ public class MyLinkedList { private Node first; private Node last; private int size; public int size() { return size; } /** * 检查输入的index是否在范围内 */ public void rangeCheck(int index){ if(index<0||index>=size){ try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); } } } /** * 返回指定位置对象 */ public Object get(int index) { rangeCheck(index); Node temp = null; if(first!=null) { if(index<(size >> 1)) { temp = first; for(int i=0;i<index;i++) { temp = temp.next; } }else { temp = last; for(int i=size-1;i>index;i--) { temp = temp.previous; } } } return temp.obj; } /** * 在末尾增加对象 * @param obj */ public void add(Object obj) { Node n = new Node(); if(first == null) { n.previous=null; n.obj=obj; n.next=null; first = n; last = n; }else { n.previous=last; n.obj=obj; n.next=null; last.next=n; last = n; } size++; } /** * 在制定位置增加对象 */ public void add(int index, Object obj) { Node temp = null; if(first!=null) { temp = first; for(int i=0;i<index;i++) { temp = temp.next; } } Node newNode = new Node(); newNode.obj = obj; if(temp!=null) { newNode.previous=temp.previous; newNode.next=temp; temp.previous=newNode; newNode.previous.next=newNode; size++; } } /** * 删除索引位置的对象 * @param index */ public void remove(int index) { Node temp = null; if(first!=null) { temp = first; for(int i=0;i<index;i++) { temp = temp.next; } } temp.previous.next=temp.next; temp.next.previous=temp.previous; size--; } public static void main(String[] args) { MyLinkedList test = new MyLinkedList(); test.add("111"); test.add("222"); test.add(1,"hhh"); test.add("333"); //test.remove(1); for(int i=0;i<test.size();i++) { System.out.println(test.get(i)); } } }
阅读更多
相关文章推荐
- Java集合,LinkedList底层实现和原理
- java集合LinkedList的底层实现源码详解
- Java集合之ArrayList和LinkedList的实现原理以及Iterator详解
- Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap
- java8集合框架LinkedList类实现自己简单的理解
- Java LinkedList 实现原理及数据接口
- Java集合---LinkedList底层原理
- java LinkedList实现原理概述
- Java集合之ArrayList和LinkedList的实现原理以及Iterator详解
- Thinking in Java 泛型章节中不用LinkedList来实现自己的内部链式存储机制
- 根据链表的原理,自己实现一个简易版的LinkedList
- 深入Java集合学习系列:LinkedList的实现原理
- 【java集合】自己实现简易的LinkedList
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
- Java集合7:LinkedList的实现原理
- Java LinkedList 实现原理
- 【Java】HashMap底层原理,自己实现HashMap
- Java 学习系列:LinkedList 的实现原理
- Java中LinkedList实现原理
- java jdk1.7版本的LinkedList底层原理解析