数组的简单特征

数组的特征:

  • 1.定义数组必须指定大小
  • 2.数组的每一个元素的内存都是连续的
  • 3.数组的随机访问操作,是一个常量时间 arr[index]
  • 4.每一个数组都内置了一个成员变量 length,表示数组的总长度
  • 5.数组增加元素,涉及增加位置后面的所有元素都要进行移动,所以该操作花费的时间为线性时间
  • 6.数组删除元素,涉及增加位置后面的所有元素都要进行移动,所以该操作花费的时间为线性时间
  • 7.数组的元素查找花费时间为线性时间

数组的辅助类Arrays:

   Arrays.copyOf 数组的扩容和缩容
   Arrays.toString 打印数组元素
   Arrays.deepToString 打印二维数组元素的值
   Arrays.fill 给数组填充初始化值
   Arrays.equals 比较两个数组的内容是否相同
   在Arrays源码当中,可以按Ctrl+F12罗列出当前这个类所有的成员变量和成员方法

一维数组的初始化:

            int[] arr0 = new int[5];
           System.out.println(arr0.length); 

            int[] arr1 = {1,2,3,4,5};
            System.out.println(arr1.length);

            int[] arr2 = new int[]{1,2,3,4,5};
            System.out.println(arr2.length);

数组的输出方式

int[] arr = new int[100];
Random rd = new Random();
for(int i = 0 ; i < 100 ; i ++){
arr[ i ] = rd.nextInt(100)+100;
}
//输出数组的方式一 标准的for循环
for(i = 0 ; i < arr.length ; i ++){
if( arr[i] % 2 ==0){
System.out.print( arr[i] + " ");
}
}
System.out.print();
//输出数组的方式二 foreach arr.length
for (int val : arr) {
if (val % 2 == 0) {
System.out.print(val + " ");
}
}
System.out.println();

数组的扩容:

int[] arr = new int[100];向这个数组中再放入100个元素在打印。
先给arr数组扩容。

  • 1 先开辟新数组;
    int[] newArr = new int[2*arr.length];
  • 2把旧数组的值拷贝到新数组中;
    for(int i = 0 ; i < arr.length ; i ++){
    newArr[i] = arr[i];
    }
  • 3 让arr指向新数组。
    arr = newArr;

使用Arrays.copyOf()可以直接做到数组的扩容和缩容
arr = Arrays.copyOf(arr,arr.length*2);

往数组添加元素:

// 往数组添加50个整数1-50,每次添加新元素都从数组的0号位置进行添加
int count = 0;
for (int i = 0; i < 50; i++) {
// 先把数组中所有的元素都往后挪动一下
for (int j = count; j > 0; j–) {
arr[j] = arr[j - 1];
}
// 再把数据放到0号位
arr[0] = i + 1;
// 更新元素个数
count++; // arr.length
}
for (int i = 0; i < count; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();

删除数组中某一位置元素:

// 把第21号位元素从arr里面删除,重新输出arr数组的元素值
for (int i = 21; i < count - 1; ++i) {
//将所删除的元素之后的每一位元素都向前提一位
arr[i] = arr[i + 1];
}
count–;
for (int i = 0; i < count; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();

在数组中查找一个元素:

// 在数组中查找46,是一个线性时间
for (int i = 0; i < count; ++i) {
if (arr[i] == 46) {
System.out.println(“find 46!!!”);
System.out.println(i);
break;
}else{
System.out.println(-1);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值