重捡Java(三)数组
2020-05-04 本文已影响0人
我很惊讶
python在处理数组字典这一类的数据的时候,有两个很强大的功能——“切片和构造器”
但是在java中则更麻烦一些。
声明创建数组
Java的数组是一个固定长度的,包含了相同类型数据的容器。
int values []; //声明。此时未分配空间
values = new int[6]; //创建,此时分配空间
values = {18,62,68,82,65,9}; //赋值
int values [] = new int[]{18,62,68,82,65,9}; //也可以写成一行
访问数组
数组通过下标访问,第一个数据的下标为0
a[0] = 1; //为数组的第一个数赋值
可以通过循环遍历处理数组
for (int i = 0; i < a.length; i++)// length获取数组长度的方法
System.out.println(a[i]);
}
也可以这样遍历
for(int c : a){
System.out.println(c);// 这样就不用通过下表处理值了
}
数组排序
public static void main(String[] args) {
int values[] = new int[] { 18, 62, 68, 82, 65, 9 };
// 排序
Arrays.sort(values);
System.out.println();
for (int value : values) {
System.out.print(value + " ");
}
// 降序
int valuesDescp[] = new int[values.length];
for (int i = 0; i <= values.length - 1; i++) {
valuesDescp[i] = values[values.length - 1 - i];
System.out.println("a:"+valuesDescp[i]);
System.out.println("b:"+values[values.length - 1 - i]);
}
for (int value : valuesDescp) {
System.out.print(value + " ");
}
}
复制数组
把一个数组的值,复制到另一个数组中
System.arraycopy(src, srcPos, dest, destPos, length)
src: 源数组
srcPos: 从源数组复制数据的起始位置
dest: 目标数组
destPos: 复制到目标数组的起始位置
length: 复制的长度
public class HelloWorld {
public static void main(String[] args) {
int a [] = new int[]{18,62,68,82,65,9};
int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
//通过数组赋值把,a数组的前3位赋值到b数组
//方法一: for循环
for (int i = 0; i < b.length; i++) {
b[i] = a[i];
}
//方法二: System.arraycopy(src, srcPos, dest, destPos, length)
//src: 源数组
//srcPos: 从源数组复制数据的起始位置
//dest: 目标数组
//destPos: 复制到目标数组的启始位置
//length: 复制的长度
System.arraycopy(a, 0, b, 0, 3);
//把内容打印出来
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
}
}
多维数组
就是数组的元素还是数组
int[][] a = new int[][]{
{1,2},
{3,4}
}
也就是
int[0][0] = 1;
int[0][1] = 2;
int[1][0] = 3
int[1][1] = 4;
从最外层开始依次往里套娃
有二维自然也有三维四维五维
int [][][] b = new int[][][]{
{ {1,2},{3.4} }.
{ {5,6},{7,8} }
}
Arrays工具类
Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能。
1.复制数组
// copyOfRange(int[] original, int from, int to)
// 第一个参数表示源数组
// 第二个参数表示开始位置(取得到)
// 第三个参数表示结束位置(取不到)
int[] b = Arrays.copyOfRange(a, 0, 3);
2.转换为字符串
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
String content = Arrays.toString(a);
3.排序
刚才写了,注意,这个函数不是返回一个返回值,而是直接操作原数组
Arrays.sort(a);
4.搜索
查询元素出现的位置
需要注意的是,使用binarySearch进行查找之前,必须使用sort进行排序
如果数组中有多个相同的元素,查找结果是不确定的
System.out.println("数字 62出现的位置:"+Arrays.binarySearch(a, 62));
5.判断是否相同
System.out.println(Arrays.equals(a, b));
注意,数组是有顺序的,书序不同结果也是 false
6.填充
使用同一个值,填充整个数组
Arrays.fill(a, 5);//用5填充a
注更多方法和使用方式可以按ctrl进入util.Arrays类里观看
可以在这个类里查询方法和使用条件