java 单链集合实现
来源:互联网 发布:淘宝提醒发货不见了 编辑:程序博客网 时间:2024/06/05 14:37
本文参考LinkedList源码实现单链集合的实现,如果想了解双链实现,请参考点击打开链接
接口:
public interface MyList<T> {/** * 定义添加接口 * @param element */public void add(T element);/** * 定义clear接口 */public void clear();/** * 删除接口 * @param index * @return */public boolean remove(int index);/** * 查找,判断对象是否存在 * @param element * @return */public boolean find(T element);/** * 根绝索引查找 * @param index * @return */public T get(int index);/** * 获取当前的链表的个数 * @return */public int size();}存储数据 data实体类:
public class Node<T> {//数据private T data;//下一个节点的对象private Node<T> next;public Node() {data = null;next = null;}public Node(T data) {this.data = data;this.next = null;}public Node(T data, Node<T> next) {this.data = data;this.next = next;}public void setData(T data) {this.data = data;}public T getData() {return this.data;}public void setNext(Node<T> next) {this.next = next;}public Node<T> getNext() {return this.next;}}
实现类:
public class MyLinkedList<T> implements MyList<T> {//存储节点private Node<T> head;//存储每一个当前的节点private Node<T> tail;//存储当前链表的sizeprivate int size;public MyLinkedList() {this.head = null;this.tail = null;this.size = 0;}public MyLinkedList(T data) {this.head = new Node<T>(data);this.tail = null;this.size = 0;}@Override// 添加元素public void add(T element) {//生成当前节点的对象Node<T> node = new Node<T>(element);//首次操作将两个存储对象指向同一个内存空间if (this.head == null) {this.head = node;this.tail = node;} else {//将新的note节点指向tail节点(head的尾端节点)this.tail.setNext(node);//将note节点重新赋值给tail,tail就会变成head的最后一个节点this.tail = node;}this.size++;}@Override// 清空链表public void clear() {this.head = null;this.tail = null;System.gc();//清除内存}/** * 获取元素 */@Overridepublic T get(int index) {T t = null;//index不超过size的限制if (index >= 0 && index < size) {Node<T> point = head;int count = 0;//循环找到所在的节点while (count < size) {if (count == index) {t = point.getData();break;}point = point.getNext();count++;}}return t;}@Override/** * 删除元素 * @param index * @return */public boolean remove(int index) {if (index >= 0 && index < size) {Node<T> point = head;int count = 0;// 当对象是最后一个的时候while (count < size) {if (count == index) {break;}point = point.getNext();count++;}Node<T> temp = point.getNext(); //获取下一个节点的数据//替换当前的节点point.setData(temp.getData()); //替换下一个节点point.setNext(temp.getNext());temp = null;size--;return true;}return false;}@Override// 查找链表中是否包含某元素public boolean find(T element) {Node<T> point = head;while (point.getNext() != null) {if (point.getData().equals(element)) {return true;}point = point.getNext();}return false;}@Overridepublic int size() {return this.size;}}
0 0
- java 单链集合实现
- Java单例集合下List接口的常用实现类
- Java单例集合下set接口及其常用实现类
- Java 实现单例
- Java实现-单例
- 单链表面试题集合
- Java集合实现细节
- java集合底层实现
- Java集合实现原理
- java集合数据结构实现
- 在以单链表表示的正整数的有序集合上,实现集合的并、交和差运算
- 自己实现集合框架(五):利用单链表解决约瑟夫环问题
- java详解 --- 集合之数组实现和链表实现
- java实现单项链表
- 单例模式 java 实现
- java实现单例 singleton
- 单例模式--java实现
- java 实现单例模式
- Android gc垃圾回收研究学习
- 安卓ui线程优先级
- Android 获取屏幕尺寸与密度
- 内存管理--page.s memory.c源码分析
- LeetCode 题解(128): Majority Element
- java 单链集合实现
- Java基础---网络编程
- WIFI基本知识整理
- 使用 EhCache 关于临时目录的一个注意事项
- Effective C++ 条款27
- 大根堆-小根堆-堆排序-C实现
- frame,iframe,frameset之间的关系与区别
- 黑马程序员----多态和内部类、异常
- 设置环境变量的三种方法