美文网首页
实现数组_1_增删改查

实现数组_1_增删改查

作者: 苏州城外无故人 | 来源:发表于2019-04-11 20:23 被阅读0次

    数组的增删改查

    package com.company;
    
    /**
     * @program: Array
     * @description: 数组
     * @author: Gu
     * @create: 2019-04-10 22:03
     **/
    
    public class Array {
    
        private int[] data;
        private int size;
    
        //初始化
        public Array(int capacity) {
            data = new int[capacity];
            size = 0;
        }
    
        //无参构造函数默认最大容量为10
        public Array() {
            this(10);
        }
    
        //数组长度
        public int length() {
            return data.length;
        }
    
        //数组元素个数
        public int getSize() {
            return size;
        }
    
        //数组是否为空
        public boolean isEmpty() {
            return size == 0;
        }
        //向数组指定位置中添加元素
        public void add(int index, int element) {
            if (index >= data.length || index < 0) {
                throw new IllegalArgumentException("[数组索引非法]");
            }
    
            if (size >= data.length) {
                throw new IndexOutOfBoundsException("[数组已达到最大容量]");
            }
    
            for (int i = size - 1; i >= index; i--) {
                data[i + 1] = data[i];
            }
            data[index] = element;
            size++;
        }
    
        //向数组第一个索引添加元素
        public void addFirst(int element) {
            add(0, element);
        }
    
        //数组末尾添加元素
        public void addLast(int element) {
            add(size, element);
        }
    
        //根据index查找指定元素
        public int get(int index) {
            if (index < 0 || index >= size) {
                throw new IllegalArgumentException("[数组索引非法]");
            }
            return data[index];
        }
    
        //查找数组是否包含指定元素
        public boolean contains(int element) {
            for (int value : data) {
                if (value == element) {
                    return true;
                }
            }
            return false;
        }
    
        //返回指定元素的索引
        public int find(int element) {
            for (int i = 0; i < size; i++) {
                if (data[i] == element) {
                    return i;
                }
            }
            return -1;
        }
    
    
        //修改数组元素
        public void set(int index, int element) {
            if (index < 0 || index >= size) {
                throw new IllegalArgumentException("[数组索引非法]");
            }
            data[index] = element;
        }
    
        //删除指定元素
        public void delete(int element) {
            int index = find(element);
            if (index == -1) {
                throw new IllegalArgumentException("[数组没有该元素]");
            }
            remove(index);
        }
    
        //根据索引删除元素
        public int remove(int index) {
            if (index < 0 || index >= size) {
                throw new IllegalArgumentException("[数组索引非法]");
            }
            int res = data[index];
            for (int i = index + 1; i < size; i++) {
                data[i - 1] = data[i];
            }
            size = size - 1;
            return res;
        }
    
        //删除第一个
        public int removeFirst() {
            return remove(0);
        }
    
        //删除最后一个
        public int removeLast() {
            return remove(size - 1);
        }
    
        //打印数组相关信息
        @Override
        public String toString() {
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(String.format("数组的size : %d, 数组的capacity : %d \n", size, data.length));
            stringBuffer.append("[");
            for (int i = 0; i < size; i++) {
                stringBuffer.append(data[i]);
                if (i == size - 1) {
                    stringBuffer.append("]");
                    break;
                }
                stringBuffer.append(",");
            }
            return stringBuffer.toString();
        }
    
    }
    
    

    测试类

    public class Main {
    
        public static void main(String[] args) {
    
            Array arr = new Array(20);
            for(int i = 0 ; i < 10 ; i ++)
                arr.addLast(i);
            System.out.println(arr);
    
            arr.add(1, 100);
            System.out.println(arr);
    
            arr.addFirst(-1);
            System.out.println(arr);
            // [-1, 0, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
            arr.remove(2);
            System.out.println(arr);
    
            arr.removeElement(4);
            System.out.println(arr);
    
            arr.removeFirst();
            System.out.println(arr);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:实现数组_1_增删改查

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