java 利用数组实现增删改查

1:创建数组

int[] arr = new int[10];//创建数组,初始化大小为10

2:访问数据数据项

    arr[0]=1;//这个是设定她的值
            System.out.println(arr[0]);//这个是获取她的值,通过打印的方式

3:数组的初始化

int[] arr2 = new int[]{1,2,3};

二:

面向对象编程方式

1:使用自定义类来封装数组

package SJJG;

public class Myarray {
    private long[] array;
    //表示有效数据的长度
    private int elements;
    public Myarray() {
        // TODO Auto-generated constructor stub
//        在构造方法里给数组赋值
        array = new long[50];
    }
    //在重构构造方法
    public Myarray(int maxSize){
        array = new long[maxSize];//这个大小是我的构造方法里传入的
    }
    //接下来插入数据
    public void insert(int values){
        //第一次添加是为0的,即values
        array[elements]=values;
        elements++;//让她递增
        //当第二次调用这儿添加的时候,array[elements]里面是为1,然后递增为2
    }
    //显示数据
    public void diplay(){
        System.out.print("[");
        //用for循环遍历,i=0,下标为0
        for (int i = 0; i < elements; i++) {
            System.out.print(array[i]+"  ");
        }
        System.out.println("]");
    }
    //查找数据
    //我们是根据什么来查找呢?我们是根据值来查找,返回她的所有值 
    public int search(long value){
        int i;//i在外面进行一个判断,然后在循环里面赋值
//        比如说我查找这个15,arry.insert(15);,那么她的索引是2
        //怎么样来查呢?同样也是经过一个循环
        for (i = 0; i < elements; i++) {
            if (value == array[i]) {//如果值是等于array[i]
//                如果查找到了,就跳出
                break;
                
            }
        }
        if(i==elements){//意思就是说for循环结束了,都查找完还没找到这个元素,就返回-1
            return -1;
        }else{
            return i;
        }
        
    }
//    查找数据,根据索引来查
    public long get(int index){
        //这个时候需要对index进行判断
        if(index >=elements || index<0)//如果index大于有效元素,或者小于0
        {
            //抛出一个异常
            throw new ArrayIndexOutOfBoundsException();
        }else{
            return array[index];
        }
        
        
    }
//删除数据
//    根据index来删除数据
    public void delete(int index){
        //删除也需要对index进行判断,判断完成后应该怎么样呢?
                if(index >=elements || index<0)//如果index大于有效元素,或者小于0
                {
                    //抛出一个异常
                    throw new ArrayIndexOutOfBoundsException();
                }
        //假设数组的值分别为1,3,4,5,如果要删除3,那么我们把4的值赋值给array[1],即3就可以了,覆盖她
//        5接着覆盖4,最后把elements减去1;表示有效长度减去1
                else{
                    //i从index开始,小于i++
                for (int i = index; i < elements; i++) {
                    //前面的值等于后面的值
                    array[index]=array[index+1];
                }
                //最后还要对有效的长度减1
                elements--;
                }
    }
    //更新数据
    public void chang(int index,int newValue){
        //同样,因为有index,所以需要判断
        if(index >=elements || index<0)//如果index大于有效元素,或者小于0
        {
            //抛出一个异常
            throw new ArrayIndexOutOfBoundsException();
        }
        //思考如何进行更新?
        else{
//            只需要把index的值进行一个设置就可以了
            array[index]=newValue;
        }
    }
}

2:添加类的方法来实现数据操作

package SJJG;

public class Test {
public static void main(String[] args) {
    //创建类的实例
    Myarray arry = new Myarray();
    arry.insert(13);//插入数据
    arry.insert(12);
    arry.insert(15);
//    调用显示方法,会把数组全都打印出来
    arry.diplay();
    //进行查找
    System.out.println(arry.search(12));//打印出1,查找到
    System.out.println(arry.search(11));//查找不到,返回-1
    //进行索引查找
    System.out.println(arry.get(2));//打印出15
//    System.out.println(arry.get(4));//抛出异常
//    System.err.println(arry.get(-3));//抛出异常
    //删除数据
    arry.delete(1);
    //再进行显示
    arry.diplay();
    //进行改
    arry.chang(0,19);
    arry.diplay();//此刻13已经变成19了
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值