数据结构与算法(二)

1.解决数组长度的不可变问题(数组扩容的思想)

package com.bjsxt.shujujiegou;

import java.util.Arrays;

public class TestOpArray {
    public static void main(String[] args) {
        //解决数组的长度不可变的问题
        int[] arr = new int[]{9, 8, 7};
        //快速查看数组中的元素
        System.out.println(Arrays.toString(arr));
        //要加入数组的目标元素
        int dst = 6;

        //创建一个新的数组,长度是原数组长度+1
        int[] newArr = new int[arr.length + 1];
        //把原数组中的数据全部复制到新数组中
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        //把目标元素放入新数组的最后
        newArr[arr.length] = dst;
        //新数组替换原数组
        arr = newArr;
        //查看数组增加后的元素样式     !! 有[] 不知道为啥
        System.out.println(Arrays.toString(arr));
    }

}

2.对数组元素进行删除操作(找到你关注的对象元素,以该元素为中心,对数组进行操作)

package com.bjsxt.shujujiegou;

import java.util.Arrays;

public class TestOpArray2 {
    //如何删除数组中的元素
    public static void main(String[] args) {
        //目标数组
        int[] arr = new int[]{9, 8, 7, 6, 5, 4};
        //要删除的元素的下标
        int dst = 5;
        //打印原数组
        System.out.println(Arrays.toString(arr));

        //创建一个新的数组,长度是原数组的长度-1
        int[] newArr = new int[arr.length - 1];
        //复制原数组中除被删除的那个元素之外的所有元素
        for (int i = 0; i < newArr.length; i++) {
            //要删除的元素之前的元素
            if (i < dst) {
                newArr[i] = arr[i];
                //要删除元素之后的元素
            } else {
                newArr[i] = arr[i + 1];
            }
        }
        //新数组替换旧数组
        arr = newArr;
        System.out.println(Arrays.toString(arr));
    }

}

3.根据下标查询元素 ---------------------------->(索引与数据有一一对应关系)

   在使用中,数组索引=数据长度-1     --------->(索引从0开始计算)

package com.bjsxt.shujujiegou;
//根据下标查询元素
public class TestSearch {
    public static void main(String[] args){
        //目标数组
        int[] arr = new int[] {2,3,5,6,8,4,9,0};
        //目标元素
        int target = 8;
        //目标元素所在的下标
        int index = -1;
        //遍历数组
        for(int i=0;i<arr.length;i++){
            if(arr[i]==target){
                index=i;
                break;
            }
        }
        //打印目标元素的下标
        System.out.println("index:" +
                ""+index);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值