1.4.1 Java数据结构章 Array

获取数组元素个数

arr.length  //注意string中是str.length(),而数组中是length,应为string中用的是方法,而数组中用的是属性(成员变量),而list中则是arr.size()

数组排序

顺序

int []a ={5,4,3,2,1};
Arrays.sort(a);

倒序(要Integer),Lambda

//省去了new
Integer []a={1,2,3,4,5};
Arrays.sort(a,(x1,x2)->{
    return x2-x1;
});

倒叙(要Integer),比较器

class less implements Comparator<Integer>{

    @Override
    public int compare(Integer o1, Integer o2) {
        return o2-o1;//这里第一个元素o1代表原来就在数组中的,而第二个元素o2代表要插入的,o2-o1如果大于0就代表o2比当前数组当前元素小,就不交换,java规定大于0交换
    }
}
Integer []a={1,2,3,4,5};
Arrays.sort(a,new less());

逆序,匿名内部类

Integer []a={1,2,3,4,5};
//这里相当于new 一个类 implements Comparator<Integer>(); 而内容直接写在这个类下面的花括号
Arrays.sort(a,new Comparator<Integer>(){
    public int compare(Integer o1, Integer o2) {
        return o2-o1;
    }
});

数组二分查找

int []a ={5,4,3,2,1};
int pos=Arrays.binarySearch(a,5);

数组的深拷贝

由于是官方实现的结构体,所以是深拷贝,即new出的对象地址不同,对象指向的地址也不同

int []a ={5,4,3,2,1};
int[] ret = a.copyOf(原始被拷贝的数组,新的数组的长度*2);
//ret就是5 4 3 2 1 0 0 0 0 0

int []a ={5,4,3,2,1};
int[] ret= a.copyOf(a,a.length);

数组的区间拷贝

int []a ={5,4,3,2,1};
int[] ret = a.copyOfRange(原始被拷贝的数组,first下标开始(0开始),end下标(结束位置)); //一般是左闭右开


Math.函数 //Math类中的函数

选择性区间拷贝和区间赋值

int []a ={5,4,3,2,1};
int[] ret =new int[a.length+100];
System.arraycopy(原数组,原数组开始拷贝的位置,目的地数组,拷贝到目的地数组的位置,最后一个参数是拷贝的元素个数)
//native 是c/c++代码实现的意思,底层你看不到,但是非常快

数组的reverse

list才有逆序函数

二维数组

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 }
//方法1
int[][] arr = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
//方法二
int[][] arr=new int[3][3];
//方法三
int[][] arr=new int[][]{{1,2},{4,5}};
//二维数组拿长度
int n=arr.length
int m=arr[0].length
//二维数组foreach
for(int [] k:a)
{
	for(int x:k)
	{
	}	
}

创建不规则的二维数组

int[][] a=new int[2][];
a[0]=new int[4];
a[1]=new int[5];

以字符串的形式打印一维数组

int []a ={5,4,3,2,1};
System.out.println(Arrays.toString(a));

二维数组转字符串

int[][] a=new int[][]{{1,2},{4,5}};
String ret = Arrays.deepToString(a);


//java二维数组不可以省略行,可以省略列

java给数组填充

int [] a=new int[100];
a.fill(a,9); //所有内容变成9

a.fill(a,0,3,8);//把0-2下标的元素变成8

数组改string

Arrarys.toString((array));

获取元素个数

这是这个类的成员变量,也叫属性,不是方法

array.length;

范围for

java的arry支持范围for

int [] a={1,2,3,4,5};
int sum=0;
for(int x: a){
    sum+=x;//x是当前下标元素的引用
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Ap0stoL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值