• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
火磷
Memory will fade,but not notes.
博客园    首页    新随笔    联系   管理    订阅  订阅
java Arrays常用方法

1. 简介

Arrays类包含用于操作数组的各种方法(例如排序和搜索)。此类还包含一个静态工厂,允许将数组视为列表。

如果指定的数组引用为null,则此类中的方法都抛出NullPointerException,除非另有说明。

 2. 方法说明

List<T>  asList(T... a):返回由指定数组构成的大小固定的列表,该列表不能使用add和remove方法改变长度

int binarySearch(Object[] a, Object key):使用二分查找元素的索引

T[] copyOfRange(T[] original, int from, int to):复制数组,并且指定开始/结束索引

T[] copyOf(T[] original, int newLength):复制数组,并且指定复制长度

void fill(Object[] a, Object val):使用指定元素填充数组

void fill(Object[] a, int fromIndex, int toIndex, Object val):使用指定数组填充数组,并且指定填充的开始/结束索引

void sort(Object[] a):对数组排序,需要实现数组元素的Comparable接口

void sort(Object[] a, int fromIndex, int toIndex):对指定开始/结束索引的数组排序,需要实现数组元素的Comparable接口

void sort(T[] a, Comparator<? super T> c):对数组排序,需要实现数组元素的Comparator接口

void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c):对指定开始/结束索引的数组排序,需要实现数组元素的Comparator接口

String toString(Object[] a):数组转字符串

static Stream<T> stream(T[] array):数组转为流

static IntStream stream(int[] array):int数组转为流,还有DoubleStream和LongStream

 3. 简单示例

 1 /*
 2 *二分查找仅适用于有序的数组
 3 * */
 4 
 5 import java.util.*;
 6 import java.util.stream.Stream;
 7 
 8 public class ArraysFunc {
 9     public static void main(String[] args){
10 
11         String[] arr1 = new String[]{"a","b","b","d","c"};
12 
13         //数组转成长度固定的列表,不能使用add和remove方法改变list长度
14         List<String> list1 = Arrays.asList(arr1);
15         System.out.println(list1);        // [a, b, b, d, c]
16 
17         //使用二分查找元素索引
18         int index = Arrays.binarySearch(arr1,"b");
19         System.out.println(index);       // 2
20 
21         // 复制指定开始/结束位置的数组(不包含结尾)
22         String[] arr2 = Arrays.copyOfRange(arr1, 1,3);
23         System.out.println(Arrays.asList(arr2));   // [b, b]
24 
25         //复制指定长度的数组(索引从0开始)
26         String[] arr3 = Arrays.copyOf(arr1,3);
27         System.out.println(Arrays.asList(arr3));         // [a, b, b]
28 
29         // 判断数组是否等价
30         boolean flag1 = Arrays.equals(arr1,arr2);
31         System.out.println(flag1);   // false
32 
33         // 对数组填充指定元素,可指定范围(不包含结尾)
34         Arrays.fill(arr3,"e");
35         System.out.println(Arrays.asList(arr3));          // [e, e, e]
36         Arrays.fill(arr3,0,2,"f");
37         System.out.println(Arrays.asList(arr3));         // [f, f, e]
38 
39         // 对数组排序
40         Arrays.sort(arr1);
41         System.out.println(Arrays.asList(arr1));       // [a, b, b, c, d]
42 
43         // 将数组变成字符串,保留完整符号
44         String str1 = Arrays.toString(arr1);
45         System.out.println(str1);      // [a, b, b, c, d]
46 
47         // stream,可以用于数组类型转换
48         String str = "1 3 2 5 6 4";
49         String[] strArray = str.split(" ");
50         Stream<String> stringStream = Arrays.stream(strArray);
51         int[] intArray = Arrays.stream(strArray).mapToInt(Integer::parseInt).toArray();
52         int[] intArr = Stream.of(strArray).mapToInt(Integer::parseInt).toArray();
53     }
54 }

 4. 说明

4.1 使用Arrays.binarySearch()方法时,需要注意数组要是有序的,否则将会无法得到自己想要的结果。

      这是由于该方法使用二分查找法实现。

4.2 使用Arrays.sort()方法时,对于自定义元素需要实现Comparable或者Comparator接口。

      关于两接口的实现参考如下:https://www.cnblogs.com/jfl-xx/p/10656433.html

!!!

posted on 2019-04-06 14:45  火磷  阅读(1377)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3