LinkedList集合的知识点,以及自定义linkedlist类实现简单操作

LInkedLIst集合

底层结构

链表结构(数据以节点为单位)

单向链表
在这里插入图片描述

双向链表
在这里插入图片描述

特点

查询效率较低,增删效率较高

定义一个链表结构来实现添加和获取操作

package work03;
public class DemoLinkedList {
    public static void main(String[] args) {
        MyLinkedList.add("s");
        MyLinkedList.add("ssa");
        MyLinkedList.add("sa");
        System.out.println(MyLinkedList.size);
        System.out.println( MyLinkedList.get(2));
    }
}
//工具类
class MyLinkedList{
     static int size;//数据长度
    private static Node head = null;//先定义头指针指向空
    //添加元素方法
    public static void add(Object obj) {
        //1.如果是第一个元素
        if(head==null){
           head = new Node(obj,null);//将头指针指向新创建的元素节点
           size++;
           return;
        }else{
            Node temp = head;//定义临时变量temp存储地址
            while (temp.getNext()!=null){//如果temp不指向空
                temp = temp.getNext();//temp指向下一个节点地址
            }
            temp.setNext(new Node(obj,null));//将temp指向新节点
        }
        size++;
    }
    //获得该索引位置出的值
    public static Object get(int index) {
       //如果索引不符合规则抛出异常
        if (index<0||index>size){
            throw  new IndexOutOfBoundsException("索引越界异常");
        }
        Node temp = head; //定义temp指向head,临时变量
        for (int i = 1; i <=size; i++) {
            if(i==index){
                return temp.getData();//返回该元素
            }
            temp =temp.getNext();
        }
        return null;
    }
}
//节点类
class Node{
    private Object data ;//存放数据
    private Node next;//存放下一个节点地址
    public Node(Object data, Node next) {
        this.data = data;
        this.next = next;
    }
    public Node() {
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
    public Node getNext() {
        return next;
    }
    public void setNext(Node next) {
        this.next = next;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值