Arrays类的一些常用函数
-
Arrays.sort(Object[] array)
- 对数组按照升序排序
int[] nums = {-3,4,0,5,6,11};
Arrays.sort(nums);
for(int n :nums)
System.out.print(n+" ");
/* 输入:-3,4,0,5,6,11
* 结果:-3 0 4 5 6 11
*/
-
Arrays.sort(Object[] array, int x, int y)
- 在[x,y)区间内对数组进行升序排序
int[] nums = {-3,4,0,11,6,5};
Arrays.sort(nums,1,4);
for(int n :nums)
System.out.print(n+" ");
/* 输入:-3,4,0,11,6,5
* 结果:-3 0 4 11 6 5
*/
- Arrays.sort(Object[] array, (x, y)-> { ***});
- 可以自定义排序(在leetcode等算法题目中碰到)
int[] nums = {3,30,34,5,9};
Arrays.sort(numsArr, (x, y) -> {
long sx = 10, sy = 10;
while (sx <= x) {
sx *= 10;
}
while (sy <= y) {
sy *= 10;
}
return (int) (-sy * x - y + sx * y + x);
});
for(int n :nums)
System.out.print(n+" ");
/* 输入:3 30 34 5 9
* 结果:9 5 34 3 30
*/
Largest number题目:给定一组非负整数 nums
={30,3,34,5,9},重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。
int[] nums = {30,3,34,5,9};
Integer[] numsArr = new Integer[nums.length];
for (int i = 0; i < nums.length; i++) {
numsArr[i] = nums[i];
}
Arrays.sort(numsArr, (x, y) -> {
long sx = 10, sy = 10;
while (sx <= x) {
sx *= 10;
}
while (sy <= y) {
sy *= 10;
}
return (int) (-sy * x - y + sx * y + x);
});
if (numsArr[0] == 0) {
System.out.println(0);
}
StringBuilder ret = new StringBuilder();
for (int num : numsArr) {
ret.append(num);
}
System.out.println(ret);
/* 输入:30 3 34 5 9
* 结果:9534330
*/
-
Arrays.fill(Object[] array,Object object)
- 为数组元素填充相同的值
int[] nums = {-3,4,0,11,6,5};
Arrays.fill(nums, 1);
for(int i :nums)
System.out.print(i+" ");
/* 之前:-3 4 0 11 6 5
* 结果:1 1 1 1 1 1
*/
-
Arrays.fill(Object[] array,int x,int y,Object object)
- 为数组下标从x到y-1填充相同的值
int[] nums = {-3,4,0,11,6,5};
//对数组元素下标2到4的元素赋值为3
Arrays.fill(nums,2,5,3);
for(int i :nums)
System.out.print(i+" ");
/* 之前:-3 4 0 11 6 5
* 结果:-3 4 3 3 3 5
*/
-
Arrays.toString(Object[] array)
- 以字符串形式返回数组
int[] nums = {-3,4,0,11,6,5};
System.out.println(Arrays.toString(nums));
/*
* 结果:[-3, 4, 0, 11, 6, 5]
*/