Arrays常用API

Arrays常用API

本文主要总结了JAVA的Arrays工具类的常见使用方法,该工具类在机试刷题、面试过程中经常被问到,阅读完建议自己实践实践。

1.常见API:

java 复制代码
1 Arrays.toString()  //输出数组的内容(基本数据类型)

2 Arrays.sort(arr); //排序,默认是升序

3 Arrays.binarySearch(int[] a, int key)//前提数组是有序的
//元素存在返回索引号.如果元素不存在返回的规则为:负的(要找的元素应该出现的索引位置+1)

4 Arrays.asList()
//返回的列表元素不能进行删除和添加元素,因此可以在其前面加上new ArrayList<>( ** )

5 Arrays.fill(arr, val) //填充数组
6 Arrays.copyOf(arr, length) //数组的复制:返回的是一个新的数组对象
第一个变量表示原来的数组对象.第二个变量表示新的数组的长度,如果新数组的长度超过原数组的长度,保留数组元素的默认基本类型的值。

2. 重要方法讲解

2.1 Arrays.sort()

底层原理是插入排序 + 快速排序 + 归并排序,具体规则为:

html 复制代码
 1. 数组长度小于47 插入排序
 2. 数组长度在[47, 286] 快速排序(双基准, 三路快排)
 3. 数组长度大于286 归并排序

底层:数组长度小于int QUICKSORT_THRESHOLD = 286 286这个阈值时,且大于int

INSERTION_SORT_THRESHOLD = 47

47是,采用的就是快速排序了,小于47就采用插入排序。长度大于286后,就会采用归并排序了。

参考:https://blog.csdn.net/Azir_/article/details/119250369

2.2 Arrays.stream()

使用 Arrays.stream() 方法可以将数组转换为流,然后就可以对数组中的元素进行各种操作,例如过滤,映射,排序等。

https://blog.csdn.net/m0_61594817/article/details/128716814

Arrays.stream() 函数可以将数组转换为流,使用流API可以更简洁的处理数组中的数据,在大量数据的情况下可以提高性能。

方法:

https://blog.csdn.net/weixin_52279910/article/details/125543330

总:https://blog.csdn.net/weixin_42421269/article/details/121703730

2.3 Arrays.binarySearch(int[] a, int key)

元素存在返回索引号;如果元素不存在返回的规则为:负的(要找的元素应该出现的索引位置+1

java 复制代码
//排完序为[3, 4, 11, 20, 59]	
	System.out.println(Arrays.binarySearch(arr,4 ));//返回1
	System.out.println(Arrays.binarySearch(arr, 9)); //返回-3
	System.out.println(Arrays.binarySearch(arr, 100));//返回-6

2.4 Arrays.copyOf()

数组的复制:返回的是一个新的数组对象

第一个变量表示原来的数组对象.第二个变量表示新的数组的长度,如果新数组的长度超过原数组的长度,保留数组元素的默认基本类型的值。

java 复制代码
 int[] arr1 = {1, 2, 3, 4, 5}; 
    int[] arr2 = Arrays.copyOf(arr1, 5);
    int[] arr3 = Arrays.copyOf(arr1, 10);
    for(int i = 0; i < arr2.length; i++) 
        System.out.print(arr2[i] + " "); 
    System.out.println();
    for(int i = 0; i < arr3.length; i++) 
        System.out.print(arr3[i] + " ");
//输出
1 2 3 4 5 
1 2 3 4 5 0 0 0 0 0  

2.5 Arrays.asList()

Arrays.asList()方法可以将数组元素转换为list元素。(使用过程记得加上new ArrayList<>( Arrays.asList( ) );)

java 复制代码
String[] myArray = { "Apple", "Banana", "Orange" }; 
List<String> myList = Arrays.asList(myArray);
//或者
List<String> myList = Arrays.asList("Apple", "Orange");
 //myList.add("Guava"); 
 //java.lang.UnsupportedOperationException 异常!
 //这一异常意味着,向 myList 添加新元素是不被允许的;如果试图从 myList 中删除元素,也会抛出相同的异常。

注意:

1.生成的list元素是不可变的列表,不可以进行添加或者删除元素

2.不支持基本数据类型数组的转换

解决方案:

1创建真正的LIst对象

java 复制代码
  String[] myArray = { "Apple", "Banana", "Orange" };
      List<String> myList = new ArrayList<String>(Arrays.asList(myArray));

2创建list,然后遍历整个数组

https://www.jianshu.com/p/2b113f487e5e

https://blog.csdn.net/Duuuhs/article/details/89739358

相关推荐
久菜盒子工作室1 天前
量化金融|基于算法和模型的预测研究综述
算法·金融
JIngJaneIL1 天前
汽车租赁|基于Java+vue的汽车租赁系统(源码+数据库+文档)
java·vue.js·spring boot·汽车·论文·毕设·汽车租赁系统
渣哥1 天前
有一天,我和 CopyOnWriteArrayList 杯“线程安全”的咖啡
java
叽哥1 天前
Kotlin学习第 3 课:Kotlin 流程控制:掌握逻辑分支与循环的艺术
android·java·kotlin
杨杨杨大侠1 天前
第5章:实现Spring Boot集成
java·github·eventbus
华仔啊1 天前
工作5年没碰过分布式锁,是我太菜还是公司太稳?网友:太真实了!
java·后端
尚久龙1 天前
安卓学习 之 图片控件和图片按钮
android·java·学习·手机·android studio·安卓
摸鱼仙人~1 天前
深入理解 MyBatis-Plus 的 `BaseMapper`
java·开发语言·mybatis
CoovallyAIHub1 天前
SBP-YOLO:面向嵌入式悬架的轻量实时模型,实现减速带与坑洼高精度检测
深度学习·算法·计算机视觉
杨杨杨大侠1 天前
第6章:高级特性与性能优化
java·github·eventbus