Java中Arrays Api使用
2021/7/18 17:06:17
本文主要是介绍Java中Arrays Api使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Arrays APi
在日常使用Java数组的过程中,会经常使用到一些扩容、排序、搜索等操作。
准备
创建一个整数数组:
int[] ints = new int[]{3,4,2,3,5,6,1,5};
排序
Arrays.sort(ints); // 内部排序 System.out.println(Arrays.toString(ints)); //[1, 2, 3, 3, 4, 5, 5, 6]
复制
ints = Arrays.copyOf(ints, ints.length + 1); // 扩容 ints[ints.length - 1] = 7; System.out.println("Arrays.toString(ints) = " + Arrays.toString(ints)); // [1, 2, 3, 3, 4, 5, 5, 6, 7],增加了容量
二分搜索
存在则返回随机一个索引,不存在则返回搜索结果的low
指针对应的下标 + 1后的负值。源码如下:
private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) { int low = fromIndex; int high = toIndex - 1; // toIndex不包含在搜索内容中 while (low <= high) { int mid = (low + high) >>> 1; int midVal = a[mid]; if (midVal < key) low = mid + 1; else if (midVal > key) high = mid - 1; else return mid; // key found } return -(low + 1); // key not found. }
使用代码:
System.out.println("Arrays.binarySearch(ints, 2) = " + Arrays.binarySearch(ints, 2)); // Arrays.binarySearch(ints, 2) = 1 int i = Arrays.binarySearch(ints, 8); // 没找到 -(low + 1); System.out.println(i); // 返回 -(9 + 1)= -10;
填充默认值
在某些场景下,我们希望数组的初始值可以自定义,所以可以使用 fill
函数去实现,注意,只能对一维数组进行操作,如果是二维数组,那么把它当作数组的元素是数组,使用一层循环,然后对每个数组进行填充自定义的值。
Arrays.fill(ints2, 2); // 填充默认值 System.out.println("Arrays.toString(ints2) = " + Arrays.toString(ints2));
比较两个数组是否相等
不能直接用等于,也可以使用数组自带的equals
方法,但推荐使用 Arrays.equals()
方法可以自行比较。
int[] ints2 = new int[]{1,2,3}; System.out.println("Arrays.equals(ints, ints2) = " + Arrays.equals(ints, ints2)); // false, 判断两个数组是否相等。
将数组转换为List
第一种方式:
List<Integer> integers = Arrays.asList(1, 2, 3, 4);
这种方式虽然可以使用,但是生成的List
为内部类,而不是java.utils下的ArrayList
,不能对该list进行添加,删除等操作。
第二种方式
List<Integer> collect = Arrays.stream(ints).boxed().collect(Collectors.toList());
这种方式生成的就是正常的List,还可以在生成流之后对该流进行一系列的操作,强烈推荐这种方式
待续。。。
这篇关于Java中Arrays Api使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Vue3+SpringBoot资料入门教程
- 2024-11-19Vue3+SpringBoot资料入门教程
- 2024-11-18Springboot框架入门:简单教程详解
- 2024-11-18Springboot框架入门:简单教程助你快速上手
- 2024-11-18SpringBoot企业级开发入门教程
- 2024-11-18Springboot企业级开发入门教程
- 2024-11-18SpringBoot微服务入门教程
- 2024-11-18Springboot微服务入门教程
- 2024-11-18Springboot项目开发入门:轻松开启你的第一个Spring Boot应用
- 2024-11-18Springboot项目开发入门教程