Java数组

数组特点

数组是用来存储一组有序的数据的容器
数组中存储的地址是连续的
数组中存储的类型是一致的
数组一旦创建,长度不可改变

声明并创建数组

//数组的三种写法
1. 类型[] 变量名 = new 类型[长度]
2. 类型[] 变量 = new 类型[] {val,val1,val2...};
3. 类型[] 变量名 = {val,val2,val3...};
  • 遍历数组
for (int i=0;i<array.length;i++){
	int x = array[i];
}
  • 数组的最大小值
int max = array[0] ;  // 定义一个最大值,默认数组中的第一个元素是大的
int min = array[0] ; // 
for(int i = 1 ; i < array.length ; i++) {
    
    if (max < array[i] ) {
        max = array[i] ;
    }
    
    if (min > array[i]) {
        min = array[i] ;
    }
}

数组的排序

  • 冒泡排序

在这里插入图片描述

//外层循环  控制排序的次数
for (int i=1;i<array.length;i++){
	//内层循环 控制 比较的次数
	for(int j=0;j<array.length-i;j++){
	if(array[j]>array[j+1]){
		array[j]=array[j]^array[j+1];
		array[j+1]=array[j]^array[j+1];
		array[j]=array[j]^array[j+1];
		}
	}
}
  • 选择排序

选择排序

//外层循环控制循环次数
int[] array=new int[]{5,37,2,34,11,32,12};
for (int i = 0; i < array.length-1; i++) {
     int index=i;
     for (int j=i;j<array.length;j++){
         if (array[index]>array[j]){
             index=j;
         }
     }
     int temp=array[i];
     array[i]=array[index];
     array[index]=temp;

 }
 System.out.println(Arrays.toString(array));
  • 插入排序

插入排序

int[] array=new int[]{5,37,2,34,11,32,12};
for (int i = 0; i < array.length; i++) {
     int tem=array[i];
     int j = i - 1;
     for (;j>=0;j--){
         if (array[j]>tem){
             array[j+1]=array[j];
         }else{
             break;
         }
     }
     array[j+1]=tem;
 }
System.out.println(Arrays.toString(array));

数组的维护

向数组中添加或者删除元素,返回的一定是一个新的数组

System.arraycopy(src,srcOffset,dest,offset,length):将指定的数组内容拷贝到另一个数组中
src:要进行复制的数组
offset:要进行复制的数组的起始位置
dest:进行存储新数据的数组
offset:从新数组的哪一个位置存储数据
length:拷贝的长度
  • 向数组中添加一个元素
  • 向数组中删除一个元素

采用一段连续的存储单元来存储数据
对于指定下标的查找,时间复杂度为O(1);
通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为0(n);
当然,对于有序数组,则可采用二分法查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);
对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)
冒泡,选择排序时间复杂度是O(n^2)

Arrays工具类的使用

  • Arrays.toString(array):将指定的数组以字符串的形式表示,返回一个字符串
  • Arrary.sort(array):对指定的数组 按照升序进行排序(底层采用的快速排序)
  • Arrays.sort(array,from,to):将数组的from…to之间的元素进行 排序(不包含to)
  • Arrays.copyOf(array,newLen):将数组中从第1个元素到newLen长度的内容拷贝到新数组中
  • Arrays.copyOfRange(array,from,to):将数组的from…to之间的元素拷贝到新数组中
  • Arrays.stream(array).max():求数组的最大值
  • Arrays.stream(array).min():求数组的最小值
  • Arrays.stream(array).sum():求数组的和
  • Arrays.stream(array).average():求数组的平均值
  • to:截至位置,不包括

ArrayUtils 工具类的使用

不是JDK自带的,是apache提供的,封装在了commons-lang3.jar中
jar 是一个压缩文件,jar里面压缩的是.class字节码文件
Java中jar的下载,推荐下载地址
在idea的项目中,新建一个文件夹,推荐叫lib
将下载好的jar 拷贝到lib文件夹下
将lib文件夹作为库(选中lib右键–>add as Libary)

  • add:向数组尾部添加一个元素
  • addAll:向数组尾部添加 多个元素
  • addFirst:向数组头部添加一个元素
  • remove:根据索引删除指定位置的元素
  • removeElement:删除数组中指定的元素
  • removeAllOccurrences:删除数组中指定的元素的相同数
  • clone():克隆一个数组,返回一个新数组,和原数据内容一样
  • toObject():将基本类型数组 转成 包装类型数组
  • toPrimitive():将 包装类数组转成 基本数据类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值