我曾经参加过几次编程比赛,但是当时用的是c语言,现在学习了java,打算专攻java组,故以此整理。
数组无论在哪里都必不可少。
一.数组的拷贝:
使用Arrays类的copyOf方法:
1.将一个数组中的所有值拷贝到另一个里面:
int[] copiedLuckyNumber=Arrays.copyOf(luckyNumbers,luckyNumbers.length);
2.数组的扩容:
luckyNumbers=Arrays.copyOf(luckyNumbers,2*luckyNumbers.length);
如果数组元素是数值型的,那么多余元素将被赋值为0,如果数组元素是布尔型的,则将赋值为false,相反如果长度小于原始数组,只拷贝最前面的数据元素。
有了这方法就不用写个循环就能得到原函数了。
3.数组的截取:
luckyNumbers=Arrays.copyOfRange(luckyNumbers,int start,int end);
截取数组中的一段,start:起始下标(包含这个值)end:(不包含这个值)如果end超过数组的size多余的位置为0或者false
4.数组的初始化
一般来说数组的初始化可以入下边代码一样
int[] arr = new int[10];
for(int i = 0;i < arr.lenght;i++){
arr[i] = i;//这里的i代表你需要的值
}
这是一种初始化的方法
还有这种:
int[] arr = {1,2,3,4,5,6};
这样也可以对数组进行初始化
二.数组排序:
最重要的是数组里面的排序(终于可以不用写快速排序了)
Arrays.sort(yourArrays);
这个sort方法使用了优化的快速排序,效率比较高。
排序后数组中的值会按照从小到大。
后期补充(2019年9月25修改):
本方法不返回数组,仅是对yourArrays数组进行修改。
三.数组的查找
数组中自带了二分搜索的方法
static int binarySearch(type[] a,type v);
static int binarySearch(type[] a,int start,int end,type v);
参数:a 类型为基本类型
start:起始下标(包含这个值)
end:(不包含这个值)
v 同a的数据元素类型相同的值
后期补充(2019年9月25修改):
首先补充的这个方式是本方法返回的值有几类
1.找到值就直接返回当前值在数组中的下标
2.找不到而且比所有元素小就返回-1
3.找不到而且比所有元素大就返回搜索数组的长度加1
4.找不到在本数组中就返回插入在数组中的位置的下标但是要加-1
例子:
注意:
首先使用本方法需要将数组先进行排序,不然计算结果肯定是错误的,以及数组中只能有一个带查找的值,如果有多个那样的话,返回哪一个是不确定的。
四.不规则数组(略微不那么重要)
比如:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
先分配行:
int[][] odds=new int[MAX+1][]
分配这些行:
for(int n=0;n<MAX;n++)
odds[n]=new int[n+1];
五.数组的转换
1.int型数组转为字符串,其他类型的数组转为字符串也可以用这个
1 int[] arr = new int[]{1,2,3};
2 String s = Arrays.toString(arr);
后期补充(2019年9月25修改):
2.将数组转为集合类
集合类作为一个必须要掌握的东西,当然它的转换是必须要了解的
我目前懂得有两种方式:
(1)将结点链表先转化为Object对象数组,然后循环再将Object对象数组转换成相应的数组
LinkedList<Integer> res =new LinkedList<Integer>();
int[] res1 =new int[res.size()];
Object[] t = res.toArray();
for(int i =0;i<res.size();i++) {
res1[i] = (int) t[i];
}
(2)直接从链表中使用循环get()方法,然后对数组赋值(这种方法和上面这一种很像,就不再介绍了)
补充:还有一种方法,使用java8的新方法Stream(),暂时未掌握。而且我查询博客,发现没有直接返回相应数组的(除了java8的这种新方法)
六.基本数组的初始值:
创建一个数组,如果不填充数值,它也是会有初始值的
例如:
int 型数组的初始值为0
boolean类型的数组初始值为false
float型的数组初始值为0.0
但是包装类的初始值和基本类型不一样一般都是NULL
至于包装类是什么,就我理解是一种包装了基本类型的对象,里面有很多方法,例如类型转换的
整理自:核心技术卷一
整理自:互联网上多篇博客