面向对象的数组

对数组进行封装,简易集合的实现。

package demo1.util;

import java.util.Arrays;

import javax.lang.model.util.Elements;

public class MyArray {
    //用于存储数据的数组
    private int[] elements;
    
    public MyArray() {
        elements=new int[0];
    }
    //获取数组长度的方法
    public int size() {
        return elements.length;
        
    }
    //往数组末尾添加一个元素
    public void add(int element) {
        int[] newArr=new int[elements.length+1] ;
        for (int i = 0; i < elements.length; i++) {
            newArr[i]=elements[i];
        }
        newArr[elements.length]=element;
        elements=newArr;
    }
    //打印所有元素到控制台
    public void show() {
        System.out.println(Arrays.toString(elements));
        
    }
    //删除数组中的元素
    public void delete(int index) {
        //判断下标是否越界
        if (index<0||index>elements.length-1) {
            throw new RuntimeException("下标越界");
            
        }
        else {
            //创建一个新数组,数组长度为原数组长度-1
            int[] newArr=new int[elements.length-1];
            //将除去要删除的元素以外的元素复制到新数组中
            for (int i = 0; i < elements.length-1; i++) {
                if (i<index) {
                    newArr[i]=elements[i];
                }else {
                    newArr[i]=elements[i+1];
                }
            }
            //将新数组替换成原数组
            elements=newArr;
        }
        
    }
    //取出指定位置的元素
    public int get(int index) {
        return elements[index];
    }
    //插入一个元素到指定位置
    public void insert(int element,int index) {
        if (index<0||index>elements.length-1) {
            throw new RuntimeException("下标越界");
        }
        int[] newArr=new int[elements.length+1];
        for (int i = 0; i < elements.length+1; i++) {
            if (i<index) {
                newArr[i]=elements[i];
            } 
            else if (i==index) {
                newArr[i]=element;
            }
            else {
                newArr[i]=elements[i-1];
            }
        
        }
        elements=newArr;    
    }
    //替换指定位置的元素
    public void set(int element,int index) {
        if (index<0||index>elements.length-1) {
            throw new RuntimeException("下标越界");
        }
        elements[index]=element;
    }
}

测试类:

package demo1;

import java.util.Arrays;

import demo1.util.MyArray;

public class TestMyArray {
    public static void main(String[] args) {
        //创建一个可变的数组
        MyArray ma=new MyArray();
        //获取长度
        int size=ma.size();
        //System.out.println(size);
        ma.show();
        //往可变数组里面添加一个元素
        ma.add(99);
        ma.add(98);
        ma.add(97);
        ma.add(96);
        ma.add(95);
        //System.out.println(ma.size());
        //显示数组中所有元素到控制台
        ma.show();
        ma.delete(1);
        ma.show();
        //System.out.println(ma.size());
        int element=ma.get(1);
        System.out.println(element);
        ma.insert(100, 0);
        ma.show();
        ma.set(33, 1);
        ma.show();
        System.out.println(ma.size());
    }
}

 

posted @ 2019-05-19 20:41  博客园机器人  阅读(408)  评论(0编辑  收藏  举报