Arrays 类 常用方法总结

本文详细介绍Java.util.Arrays类的功能,包括数组赋值、排序、比较及查找等操作。同时介绍了J2SE5.0及JDK6新增的方法如deepEquals(), deepToString()和copyOf(),并提供了使用示例。

Arrays 类

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:

  • 给数组赋值:通过fill方法。

  • 对数组排序:通过sort方法,按升序。

  • 比较数组:通过equals方法比较数组中元素值是否相等。

  • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

具体说明:

序号方法和说明
1public static int binarySearch(Object[] a, Object key)
用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
2public static boolean equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
3public static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
4public static void sort(Object[] a)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。


J2SE 5.0 对Arrays类别作了不少的修改与新增,新增的两个方法:deepEquals( )与deepToString( )。

deepEquals( ):对数组作深层比较,简单的说,可以对二维仍至三维以上的数组进行比较是否相等

deepToString( ):将数组值作深层输出,简单的说,可以对二维仍至三维以上的数组输出其字符串值


在JDK 6中,Arrays 类别 新增了copyOf()方法,可以直接传回一个新的数组对象,而当中包括复制的内容

很好理解,题中用到一种,可以参考。






参考资料:https://www.w3cschool.cn/java/java-array.html


### Java API 中 Arrays 常用方法 以下是 `Arrays` 的一些常见方法及其功能描述: #### 数组转换为字符串表示形式 可以通过 `toString()` 方法数组的内容转化为字符串形式以便于打印和调试。该方法适用于各种数据型的数组。 ```java int[] arr = {1, 2, 3}; System.out.println(Arrays.toString(arr)); // 输出 "[1, 2, 3]" ``` 此操作简化了数组内容的查看过程[^3]。 #### 对数进行排序 `sort()` 是用于对数元素按升序排列的一个重要方法。它支持多种数据型,包括基本数据型以及实现了 `Comparable` 接口的对象型。如果需要自定义排序规则,则可通过传递一个 `Comparator` 实现对象来完成。 ```java Student[] students = {new Student("Alice", 20), new Student("Bob", 22)}; // 默认情况下会抛出异常除非 Student 已经实现 Comparable 接口 Arrays.sort(students); // 自定义比较Arrays.sort(students, (s1, s2) -> s1.getAge().compareTo(s2.getAge())); ``` 当处理复杂的数据结构时,通过提供定制化的 comparator 可灵活调整排序逻辑[^1]。 #### 查找特定值 - 使用二分法搜索 为了高效定位某个数值在已排序数组中的位置,可采用 `binarySearch()` 函数。需要注意的是,在执行之前必须确保输入序列已被正确排序;否则可能导致错误的结果。 ```java int[] sortedArr = {1, 3, 5, 7, 9}; int index = Arrays.binarySearch(sortedArr, 5); // 返回索引号 '2' if (index >= 0){ System.out.println("Found at position:"+(index+1)); } else { System.out.println(-index-1+" is the insertion point."); } ``` 这里展示了如何利用 binary search 来快速检索目标项并判断是否存在或者计算插入点[^4]。 #### 复制部分或全部数组 有时我们需要创建原数组的一部分副本而不是整个拷贝过来,这时就可以借助 fill 和 copyOf 系列函数达成目的。 ```java char[] letters = {'a', 'b', 'c'}; char[] subLetters = Arrays.copyOfRange(letters, 0, 2); // ['a','b'] boolean allMatched = Arrays.equals(subLetters,new char[]{'a','b'}); System.out.print(allMatched?"Equal":"Not Equal"); ``` 上述例子说明了怎样截取一段连续区间内的字符形成新的独立变量存储空间[^5]。 #### 填充固定值到现有数组里去 如果有需求把某些区域填充成统一模式下的初始状态,那么 fills 就派上了用场啦!它可以接受三个参数分别代表起始偏移量、结束界限还有待填充值本身哦~ ```java double[] doublesArray=new double[6]; Arrays.fill(doublesArray,-Double.MAX_VALUE); for(double d:doublesArray){ System.out.printf("%.2e ",d); } ``` ### 总结 以上列举了一些常用的关于 Array 的操作技巧,它们极大地提高了开发效率同时也增强了程序代码可读性和维护便利度。当然除了这些之外还有很多其他实用的功能等待探索发现呢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值