数组学习之array和arrays的API

本文详细介绍了Java中数组的声明与初始化、Array API 和 Arrays API 的使用方法,包括数组的访问、排序、搜索等功能,并提供了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数组声明以及初始化

Object[ ] a =new Object[n];

a[n]=xn;

Object[] a={x1,x2,x3....xx};

数组的长度: a.length;



2.Array API

提供:动态创建以及访问数组的方法


(1)Object object = Array.get(array,n);

返回该数组该索引位的一个Object对象。

int[] a=new int[10];
a[0]=1;
Object b=Array.get(a,0);
System.out.print(b);
//结果:1

(2)类型 xx = Array.get类型(array,n);

类型:基本类型(四类八种)。

返回该数组该索引位该类型的一个对象。

int[] a=new int[10];
a[0]=1;
int c=Array.get(a,0);
System.out.print(c);
//结果:1

(3)int n = Array.getLength(array);

返回指定array的数组长度。

int[] a=new int[10];
int f=Array.getLength(a);
//<=等同于=> int f=a.length;
System.out.print(f);

(4)Object object = Array.newInstance(类型,长度);   或  Object object =Array.newInstance(类型,维度数组);

创建一个具有指定类型的、指定长度or维度的的新数组。调用前者方法等效于后者创建如下数组:

int[] x = {length};
Array.newInstance(componentType, x);
//若X的值为{1},则长度为1;
//若x的值为{1,2},则表示是二维数组,维度X、Y分别为1和2

(5)set(Object array,int index,object value);

在指定数组的指定索引位放入指定的Object值。


(6)set类型(Object array,int index,类型 value);

类型:基本类型(四类八种)

在指定数组的制定所因为放入指定类型的值。



3.Arrays API

提供:操作非空数组的方法,例如:排序、搜索····且包含了一个允许将数组作为列表来查看的静态工厂。

注:该API下所有方法的数组都不能为null,否则会报NullPointerException异常。


(1)List<引用类型/包装类型> list = Arrays.asList(引用类型/包装类型array);

这个方法要鸣谢大神,祭出链接

返回一个由指定数组生成的固定大小的 List。生成的List不允许被修改!(底层代码显示:所有元素存储在一个final类型的数组里!)

注意:类型要用包装类型或者是引用类型,因为Array的指定类型需有class属性,而基本类型不存在该属性。即:参数必须是对象或者对象数组,而基本类型不是对象。若想用基本类型需要转换成包装类型来使用。

正确例子:

Integer[] x1 = {1,2,3};
List<Integer> list = Arrays.asList(x1);

//等同于

List<Integer> list = Arrays.asList(1,2,3); 

log.info("list的长度:"+list.size());

结果:list的长度:3

错误代码段:

int[] array={1,2,3};
List<int> list=Arrays.asList(array);
log.info("list的长度:"+list.size());
//结果:list的长度:1 
//存在list里的只有一个array数组(因为array是个对象),而不是数组里的元素(元素都是基本类型,基本类型不是对象)。

若想将转换后的List改成可修改大小的List,则需要转换一下:

//错误示范:
//抛出UnsupportedOperationException异常
Integer[] array = {1,2,3};
List<Integer> list = Arrays.asList(array);
list.add(4);


//正确示范:
Integer[] array = {1,2,3};
List<Integer> list = new ArrayList<Integer>(Arrays.asList(array));
list.add(4);

等同于不用API自己将array转换成List:

int[] a={1,2,3};
List<int> list = new ArrayList<int>();
for(int x : list){
list.add(x);
}

(2)Arrays.sort(类型[ ] array,int index1,int index2);

(索引位可忽略,包括index1,不包括index2)

1.若类型为:基本类型/包装类型,则是对指定类型的数组里的进行数字升序排序。

2.若类型为:引用类型或对象,则是对指定对象的数组进行升序排序,前提:必须可以比较。

(前者:a.compareTo(b)不得抛出ClassCastException异常,后者c.compare(e1, e2) 不得抛出 ClassCastException异常。)int

 int[] a={14,35,77,68,334,22,54,111,46,76};
        Arrays.sort(a);
        for(int x:a){
            System.out.print(x+",");
        }
结果:14,22,35,46,54,68,76,77,111,334,

(3)int a = Arrays.binarySearch(类型[ ] array,int index1,int index2,类型 key);

(索引位可以忽略,包括index1,不包括index2)

使用二分搜索法来搜索指定的类型数组,以获得指定的值。

注:调用前必须对数组进行sort排序

类型:可以为基本类型(除boolean)以及引用类型。

  int[] a={14,35,77,68,334,22,54,111,46,76};
        Arrays.sort(a);
        for(int x:a){
//升序后数组
            System.out.print(x+",");
        }
        System.out.println();
        int f=Arrays.binarySearch(a,111);
//索引位 若查到则为对应索引位,若没查到则为-1
        System.out.print(f);
结果:14,22,35,46,54,68,76,77,111,334,
      8

(4)Arrays.fill(类型[ ] ,int index1,int index2,类型 x);

(索引值可忽略,包括index1,不包括index2)

将x填充到数组中对应索引位里的所有元素。

   int[] a={14,35,77,68,334,22,54,111,46,76};
        Arrays.fill(a,1);
        for(int x:a){
            System.out.print(x+",");
        }
结果:1,1,1,1,1,1,1,1,1,1,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值