获取数组元素个数
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是当前下标元素的引用
}