容器

作者: 我是啵啵 | 来源:发表于2019-03-10 21:57 被阅读0次

ArrayList


import java.util.Arrays;

/*
 *
 *public SxtArrayList05()
 * public SxtArrayList05(int  capacity)
 * public int size()
 * public  void  add(E  element
 * public  E  get(int index)
 * public void set(E element, int  index)
 * public  void  checkRange(int index )
 * public void  remove(E  element)
 * public  void  remove(int index)
 * public String toString()
 * public static void main(String[] args) )
 * */
public class Arraylist<T> {
    private static final int CAP = 10;
    private Object[] objects;
    private int size;

    public Arraylist() {
        objects = new Object[CAP];
    }

    public Arraylist(int cap1) {
        objects = new Object[cap1];
//
//        Object[] objects1 = new Object[cap1];

    }

    public int size() {
        return size;
    }

    public void add(T mm) {
        //扩容
        if (size == objects.length) {
            Object[] newarry = new Object[objects.length + (CAP >> 1)];
            System.arraycopy(objects, 0, newarry, 0, size);
            objects = newarry;
        }
        objects[size] = mm;
        size++;
    }

    @Override
    public String toString() {
        StringBuffer mm = new StringBuffer();
        mm.append("[");
        for (int i = 0; i < size; i++) {
            mm.append(objects[i] + "  ");
        }
        mm.append("]");
        return mm.toString();
    }

    public T get(int index) {
        checkRange(index);
        return (T) objects[index];
    }

    public void set(T element, int index) {
        checkRange(index);
        objects[index] = element;

    }

    public void remove(int index) {
        checkRange(index);
        for (int i = 0; i < size - index - 1; i++)
            objects[index + i] = objects[index + 1 + i];
    }

    public void remove(T element) {
        for (int i = 0; i < size; i++) {
            if (objects[i].equals(element)) {
                remove(i);
            }
        }

    }

    public void checkRange(int index) {
        if (index < 0 || index > size - 1) {
            throw new RuntimeException("yours index error" + index);
        }
    }

    public static void main(String[] args) {
        Arraylist<Integer> arraylist = new Arraylist();
        Arraylist<String> arraylist2 = new Arraylist();
        arraylist2.add("linjinbo");
        arraylist2.add("hello");
        System.out.println(arraylist2);
        for (int i = 0; i < 40; i++) {
            arraylist.add(i);
        }
        System.out.println(arraylist);
        arraylist.remove(3);
        arraylist.remove(39);
//        arraylist.add("linjinbo");
        System.out.println(arraylist);
        Integer mm = 30;
        arraylist.remove(mm);
        System.out.println(arraylist);
    }


}

运行结果如图


image.png

LinkedList


/*
public  void  add(int index, E  element) {   //alt+shift+R
    public   void  remove(int index){     2
    public  E  get(int index) {
    private  void  checkRange(int index){
    private   Node  getNode(int index){
    public  void  add(E  element) {
    public String toString() {
 */
public class LinkedList<T> {
    private lnode first;
    private lnode last;
    private int size;

    //            1 2 3 4 5
    public Object get(int index) {
        checkRange(index);
        lnode temp = first;
        for (int i = 0; i < index - 1; i++) {
            temp = temp.next;
        }
        return temp;
    }

    public void add(T element) {
        lnode temp = new lnode(element);
        if (size == 0) {
            first = temp;
            last = first;
        } else {
            last.next = temp;
            temp.pre = last;
            last = temp;
        }
        size++;
    }

    @Override
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("{");
        lnode temp = first;
        for (int i = 0; i < size; i++) {
            sb.append(temp.data + "  ");
            temp = temp.next;
        }
        sb.append("}");
        return sb.toString();
    }

    public void add(int index, Object object) {
        checkRange(index);
        lnode lnode = new lnode(object);
        lnode temp = first;
        for (int i = 1; i <= index - 1; i++) {
            temp = temp.next;

        }
        lnode mmm = temp.next;
        lnode.next = mmm;
        lnode.pre = temp;
        temp.next = lnode;
        mmm.pre = lnode;
        size++;
    }

    public void remove(int index) {
        checkRange(index);
        lnode temp = first;
        if (index == size) {
            last = last.pre;
            last.next = null;

        } else {
            for (int i = 1; i <= index - 1; i++) {
                temp = temp.next;
            }
            lnode mmm = temp.next.next;
            temp.next = mmm;
            mmm.pre = temp;
        }
        size--;
    }

    public void checkRange(int index) {
        if (index <=0 || index > size ) {
            throw new RuntimeException("yours index error" + index);
        }
    }

    public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList();
        for (int i = 1; i <= 10; i++) {
            linkedList.add(i);
        }
        System.out.println(linkedList);
        lnode aaa = (lnode) linkedList.get(5);
        System.out.println(aaa);
        linkedList.add(4, 4);
        System.out.println(linkedList);
        linkedList.remove(6);
        System.out.println(linkedList);
        LinkedList<String> linkedList2 = new LinkedList();
        linkedList2.add("linjinbo");
        linkedList2.add("linjinbo222");
        linkedList2.add("linjinbo333");
        System.out.println(linkedList2);
        linkedList2.remove(3);
        System.out.println(linkedList2);

    }
}

public class lnode {
      lnode pre;
    lnode next;
     Object data;

    @Override
    public String toString() {
        return data.toString();
    }

    public lnode(lnode pre, lnode next, Object data) {
        this.pre = pre;
        this.next = next;
        this.data = data;
    }

    public lnode(Object data) {
        this.data = data;
    }
}

方法add 还有一些边界情况没考虑 有空自己写吧
运行结果如图


image.png

HashMap


/*
    public class SxtHashMap04<K,V>
    public  V  get(K  key)
    public  void   put(K key,  V   value){
    public String toString()
    public static  int  myHash(int  v, int length
 */
public class HashMap<K, V> {
    lnode2[] shuzu;
    int size;
    final int lenth = 16;

    public HashMap() {
        shuzu = new lnode2[lenth];
        size = 0;
    }

    public void put(K key, V value) {
        lnode2 mm;
        lnode2 lnode2 = new lnode2(key, value);
        int hashCode = key.hashCode();
        int myhash = myHash(hashCode, lenth);
        if (shuzu[myhash] == null) {
            shuzu[myhash] = lnode2;
            lnode2.next = null;
        } else {
            for (mm = shuzu[myhash]; mm.next != null; ) {
                mm = mm.next;
            }
            mm.next = lnode2;
            lnode2.next = null;
        }
        size++;


    }

    public static int myHash(int v, int length) {
        int aaa = v % (length);
        return aaa;
    }

    @Override
    public String toString() {
        lnode2 temp;
        StringBuffer sb = new StringBuffer();
        sb.append("[");
        for (int i = 0; i < lenth; i++) {
            temp = shuzu[i];
// temp.next != null;   !!!!
            for (temp = shuzu[i]; temp != null; ) {
                sb.append("(" + temp.key + " " + temp.value + ")   ");
                temp = temp.next;
            }
            sb.append(" \n");

        }
        return sb.toString();

    }

    public static void main(String[] args) {
        HashMap<Integer, String> hashMap = new HashMap();
        for (int i = 0; i < 56; i++) {
            hashMap.put(i, "hhhh" + "");
        }
        System.out.println(hashMap);
    }
}




public class lnode2 {
    Object key;
    Object value;
    lnode2 next;
    int hash;

    public lnode2(Object key, Object value) {
        this.key = key;
        this.value = value;
    }
}

对于边界的控制最难把握


image.png

相关文章

  • Docker入门(3)---Docker容器

    Docker 容器操作 启动容器 启动已终止容器 容器查看 停止容器 进入容器 删除容器

  • Docker容器管理

    目录 创建容器 启动容器 停止容器 进入容器 删除容器 容器迁移 1. 创建容器 docker创建容器可以用doc...

  • Docker 容器命令

    运行容器 运行Redis容器: 容器列表 停止容器 停止Redis 启动容器 停止Redis 端口映射 删除容器 ...

  • 一、容器

    (1)容器分类 <1>顺序容器(序列容器) <2>关联容器 <3>容器适配器 (2)vector容器 <1>概念 ...

  • docker容器命令

    1、查看运行的容器 2、查看所有的容器 3、创建容器 4、进入容器 5、启动容器 6、停止容器 7、删除容器 8、...

  • spring的父子容器及配置

    spring父子容器 spring总的上下文容器有父子之分,父容器和子容器。** 父容器对子容器可见,子容器对父容...

  • STL--vector、deque、list、set、map、s

    vector(向量容器) deque(双端队列容器) list(链表容器) set(集合容器) map(映射容器)

  • docker容器基本操作

    启动交互式容器 查看容器 自定义容器的名字 重启启动停止的容器 删除停止的容器 守护式容器 什么是守护式容器: 能...

  • 面试知识点(5)STL

    容器类型 STL容器主要分为 顺序容器 vector(向量容器) deque(双端队列容器) list(双向链...

  • 标准模板库(容器)

    vector 向量容器 List 容器 map 容器

网友评论

      本文标题:容器

      本文链接:https://www.haomeiwen.com/subject/jddppqtx.html