Java Arrays类的主要方法

2023-12-14 14:13:07

Java Arrays类的主要方法

在Java中,java.util.Arrays类提供了各种用于操作数组的方法。以下是其中一些主要方法的解析:

  1. sort(T[] a) / sort(T[] a, Comparator<? super T> c)

    • sort 方法用于对数组进行排序。第一个方法按自然顺序对数组进行排序(例如,对数字数组进行升序排序,对字符串数组按字母顺序排序)。第二个方法允许使用自定义的比较器来指定排序规则。
  2. binarySearch(T[] a, T key) / binarySearch(T[] a, int fromIndex, int toIndex, T key)

    • binarySearch 方法用于在排序后的数组中进行二分查找。第一个方法在整个数组中查找指定的元素,第二个方法允许在特定范围内查找。
  3. toString()

    • toString 方法将数组转换为字符串表示形式,以便于输出或打印。
  4. equals(Object[] a, Object[] a2)

    • equals 方法用于比较两个数组是否相等。它会逐个比较数组中的元素是否相同。
  5. fill(T[] a, T val) / fill(T[] a, int fromIndex, int toIndex, T val)

    • fill 方法用于将数组中的元素全部设置为指定的值。第一个方法将整个数组的元素设置为给定的值,第二个方法允许在指定范围内进行填充。
  6. copyOf(T[] original, int newLength) / copyOfRange(T[] original, int from, int to)

    • copyOf 方法用于复制数组,创建一个新数组,长度可以是原始数组的子集(第一个方法)。第二个方法允许复制原始数组的特定范围。
  7. asList(T... a)

    • asList 方法将传递的参数转换为一个固定大小的列表,这个列表支持部分修改操作,但不支持添加或删除操作。
  8. stream(T[] array)

    • stream 方法可以将数组转换为流(Stream),这样可以利用流的各种操作对数组进行处理。

当涉及到Java Arrays类的各种方法时,以下是一些使用例子:

  1. sort(T[] a) / sort(T[] a, Comparator<? super T> c)

    // 使用sort方法对整数数组进行排序
    Integer[] numbers = { 3, 1, 4, 1, 5, 9, 2, 6, 5 };
    Arrays.sort(numbers);
    System.out.println(Arrays.toString(numbers)); // 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]
    
    // 使用自定义Comparator对字符串数组进行排序
    String[] words = { "apple", "orange", "banana", "grape" };
    Arrays.sort(words, Comparator.comparing(String::length));
    System.out.println(Arrays.toString(words)); // 输出: [grape, apple, orange, banana]
    
  2. binarySearch(T[] a, T key) / binarySearch(T[] a, int fromIndex, int toIndex, T key)

    // 在已排序的数组中查找元素
    Integer[] sortedNumbers = { 1, 3, 5, 7, 9 };
    int index = Arrays.binarySearch(sortedNumbers, 5);
    System.out.println("Index of 5: " + index); // 输出: Index of 5: 2
    
    // 在指定范围内查找元素
    int indexInRange = Arrays.binarySearch(sortedNumbers, 0, 3, 7);
    System.out.println("Index of 7 in range: " + indexInRange); // 输出: Index of 7 in range: 3
    
  3. toString()

    // 将数组转换为字符串
    String[] fruits = { "apple", "orange", "banana", "grape" };
    String arrayAsString = Arrays.toString(fruits);
    System.out.println(arrayAsString); // 输出: [apple, orange, banana, grape]
    
  4. equals(Object[] a, Object[] a2)

    // 比较两个数组是否相等
    int[] array1 = { 1, 2, 3 };
    int[] array2 = { 1, 2, 3 };
    boolean isEqual = Arrays.equals(array1, array2);
    System.out.println("Arrays are equal: " + isEqual); // 输出: Arrays are equal: true
    
  5. fill(T[] a, T val) / fill(T[] a, int fromIndex, int toIndex, T val)

    // 将数组的部分或全部元素设置为指定值
    int[] numbers = new int[5];
    Arrays.fill(numbers, 7); // 将整个数组填充为7
    System.out.println(Arrays.toString(numbers)); // 输出: [7, 7, 7, 7, 7]
    
    String[] letters = { "a", "b", "c", "d", "e" };
    Arrays.fill(letters, 1, 3, "z"); // 将索引1到2的元素填充为"z"
    System.out.println(Arrays.toString(letters)); // 输出: [a, z, z, d, e]
    
  6. copyOf(T[] original, int newLength) / copyOfRange(T[] original, int from, int to)

    // 复制数组或其子集
    int[] sourceArray = { 1, 2, 3, 4, 5 };
    int[] copy = Arrays.copyOf(sourceArray, 3); // 复制前3个元素
    System.out.println(Arrays.toString(copy)); // 输出: [1, 2, 3]
    
    String[] original = { "apple", "orange", "banana", "grape" };
    String[] subset = Arrays.copyOfRange(original, 1, 3); // 复制索引1到2的元素
    System.out.println(Arrays.toString(subset)); // 输出: [orange, banana]
    
  7. asList(T... a)

    // 将参数转换为固定大小的列表
    String[] fruits = { "apple", "orange", "banana" };
    List<String> fruitList = Arrays.asList(fruits);
    System.out.println(fruitList); // 输出: [apple, orange, banana]
    
    // 修改列表的元素(注意:不能进行添加或删除操作)
    fruitList.set(1, "grape");
    System.out.println(fruitList); // 输出: [apple, grape, banana]
    
  8. stream(T[] array)

    // 将数组转换为流并使用流操作
    Integer[] numbers = { 1, 2, 3, 4, 5 };
    Arrays.stream(numbers)
          .filter(n -> n % 2 == 0)
          .forEach(System.out::println); // 输出偶数:2 4
    

文章来源:https://blog.csdn.net/Go_ahead_forever/article/details/134849693
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。