【145天】尚学堂高淇Java300集视频精华笔记(103-104)

数据湖
• 阅读 1084

2集知识点

  1. 手写Linklist的常用方法:

    1. add(Object obj)

    2. add(int index,Object obj)

    3. size()

    4. get(int index)

    5. rangCheck(int index)

    6. remove(int index)

    7. node(int index)

演示代码

package com.collection;

public class Node {
        Node previous;  //这里没加private是为了方便演示,应该加
        Object obj;     //这里没加private是为了方便演示,应该加        Node next;   //这里没加private是为了方便演示,应该加

        
        public void setPrevious(Node previous){
            this.previous = previous;
        }
        
        public Object getPrevious(){
            return previous;
        }
        
        public void setObj(Object obj){
            this.obj = obj;
        }
        
        public Object getObj(){
            return obj;
        }
        
        public void setNext(Node next){
            this.next = next;
        }
        
        public Object getNext(){
            return next;
        }
        
        
        
}
package com.collection;

import java.util.List;

public class SxtLinkedList /*implements List*/ {
    private Node first;
    private Node last;
    private int size;

    public void add(Object obj){
        Node n = new Node();
        if(first==null){
            n.setPrevious(null);
            n.setObj(obj);
            n.setNext(null);
            
            first = n;
            last = n;
        } else {
            //直接往last节点后增加新的节点
            n.setPrevious(last);
            n.setObj(obj);
            n.setNext(null);
            
            last.setNext(n);
            last = n;
        }
        size++;
    }
    
    public int size(){
        return size;
    }
    
    public Object get(int index){
        rangeCheck(index);
        Node temp = node(index);
        if(temp!=null){
            return temp.obj;
        }
        return null;
    }
    
    public void rangeCheck(int index){
        if(index<0||index>size){
            try {
                throw new Exception();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    public void remove(int index){
        Node temp = node(index);
        if(temp!=null){
            Node up = temp.previous;
            Node down = temp.next;
            up.next = down;
            down.previous = up;
            size--;
        }    
    }
    
    public Node node(int index){
        Node temp = null;
        if(first!=null){
            temp = first;
            for(int i=0;i<index;i++){
                temp = temp.next;
            }
        }
        return temp;
    }
    
    public void add(int index,Object obj){
        Node temp = node(2);
        Node newNode = new Node();
        newNode.obj = obj;
        
        if(temp!=null){
            Node up = temp.previous;
            up.next = newNode;
            newNode.previous = up;
            temp.previous = newNode;
            newNode.next = temp;
            
            size++;
        }
    }
    
    public static void main(String[] args){
        SxtLinkedList list = new SxtLinkedList();
        list.add("aaa");
        list.add("bbb");
        list.add(1,"BBB");
        list.add("ccc");
        System.out.println(list.size());
        //list.remove(1);
        System.out.println(list.get(1));
        
    }

    



}


点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
jdk1.4和jdk1.5的invoke方法的区别
jdk1.4和jdk1.5的invoke方法的区别jdk1.5:publicObjectinvoke(Objectobj,Object...args)jdk1.4publicObjectinvoke(Objectobj,Object\\args)按1.4的语法,需要将一个数组作为参数传递给invoke方法时,数组中的每个元素分别
Easter79 Easter79
3年前
substring c# js java
cString.SubString(intindex,intlength)String.SubString(intstart)等效于javascriptstringObject.substr(start,length)stringObject.substr(start) java 
Wesley13 Wesley13
3年前
java面试指导2019
ArrayList源码分析System.arraycopy()和Arrays.copyOf()方法  通过上面源码我们发现这两个实现数组复制的方法被广泛使用而且很多地方都特别巧妙。比如下面add(intindex,Eelement)方法就很巧妙的用到了arraycopy()方法让数组自己复制自己实现让index开始之后的所有成
Wesley13 Wesley13
3年前
java.lang.String & java.lang.StringBuilder
java.lang.String&java.lang.StringBuilderString成员方法作用publiccharAr(intindex)返回给定位置的代码单元publiccodePointAt(intindex)
红烧土豆泥 红烧土豆泥
4年前
补充关于equals的比较方式
补充(equals比较)Object中的equals比较的是地址languagepublicbooleanequals(Objectobj)return(thisobj);java.lang.String类中equals的方法equals判断相等依据策略:如果与目标相等返回0,小于目标返回值小于0,大于目标返回值大于0lan
Wesley13 Wesley13
3年前
Java进阶学习(3)之对象容器(上)
对象容器顺序容器记事本的例子UI设计和业务逻辑要分离接口设计add(Stringnote);getSize();getNote(intindex);
Stella981 Stella981
3年前
RestTemplate使用
自定义HttpHeader和HttpBodyGET请求构造HttpHeaders对象,主要是安全验证HttpHeadersheadersnewHttpHeaders();headers.add("Date",auth.get(0));headers.
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
C Evaluation Order 求值顺序
//main.c//gccgomainmain.cinclude<stdlib.hstaticintptrNULL;intfunc(intlen,intindex){ptrmalloc(lensizeof(in