欢迎访问宙启技术站
智能推送

10个Java函数实现数组的排序和搜索

发布时间:2023-06-12 14:40:46

Java作为一门面向对象的编程语言,在数组的排序和搜索方面拥有丰富的函数库。在本文中,我将向大家介绍Java中实现数组排序和搜索的10个函数。

一、Arrays.sort()函数

Arrays.sort()函数是Java中最基础的数组排序函数之一。它可以对一个数组进行升序排列(默认情况下),也可以提供一个Comparator对象以进行降序排列。下面是一个排序整数数组的示例代码:

int[] arr = {8,4,2,7,5};
Arrays.sort(arr);  // 升序排列
for(int i=0; i<arr.length; i++){
    System.out.print(arr[i] + " ");
}

输出结果为:2 4 5 7 8

二、Arrays.binarySearch()函数

Arrays.binarySearch()函数可以在一个已排序的数组中搜索指定的元素。如果找到了这个元素,它会返回它在数组中的索引;如果没找到,它会返回一个负数值。下面是它的一个示例代码:

int[] arr = {2,4,5,7,8};
int index = Arrays.binarySearch(arr, 5); // 搜索元素5
System.out.println(index);  // 输出值为2(即元素5在数组中的索引位置)

如果搜索的元素不在数组中,则会返回一个负数值,这个负数值可以被解释为“如果要插入元素x到数组中,应该插入到哪个位置上”:

int[] arr = {2,4,5,7,8};
int index = Arrays.binarySearch(arr, 6); // 搜索元素6
System.out.println(index);  // 输出值为-4(即插入元素6应该放在数组索引为3的位置上)

三、Arrays.parallelSort()函数

Arrays.parallelSort()函数是Java 8中新增的函数,它与Arrays.sort()函数类似,都是用来排序一个数组。但是Arrays.parallelSort()函数可以使用多线程进行排序,而Arrays.sort()函数只能单线程排序。下面是一个使用Arrays.parallelSort()函数排序整数数组的示例代码:

int[] arr = {8,4,2,7,5};
Arrays.parallelSort(arr);  // 升序排列
for(int i=0; i<arr.length; i++){
    System.out.print(arr[i] + " ");
}

输出结果为:2 4 5 7 8

四、Collections.sort()函数

Collections.sort()函数与Arrays.sort()函数类似,都是用来排序一个List。但是Collections.sort()函数只能排序单个List,而Arrays.sort()函数可以排序任意类型的数组。下面是一个使用Collections.sort()函数排序List的示例代码:

List<Integer> list = new ArrayList<>();
list.add(8);
list.add(4);
list.add(2);
list.add(7);
list.add(5);
Collections.sort(list);  // 升序排列
System.out.println(list); // 输出结果为[2, 4, 5, 7, 8]

五、Collections.binarySearch()函数

Collections.binarySearch()函数与Arrays.binarySearch()函数类似,都是用来在一个已排序的List中搜索指定的元素。下面是它的一个示例代码:

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(4);
list.add(5);
list.add(7);
list.add(8);
int index = Collections.binarySearch(list, 5); // 搜索元素5
System.out.println(index);  // 输出值为2(即元素5在List中的索引位置)

如果搜索的元素不在List中,则会返回一个负数值,这个负数值可以被解释为“如果要插入元素x到List中,应该插入到哪个位置上”。

六、Arrays.copyOfRange()函数

Arrays.copyOfRange()函数可以从一个数组中复制一段连续的元素,生成一个新的小数组。下面是它的一个示例代码:

int[] arr = {2,4,5,7,8};
int[] copyArr = Arrays.copyOfRange(arr, 1, 4); // 复制数组的第1个到第3个元素(不包含第4个元素)
for(int i=0; i<copyArr.length; i++){
    System.out.print(copyArr[i] + " ");
}

输出结果为:4 5 7

七、Arrays.fill()函数

Arrays.fill()函数可以将一个数组中的所有元素都替换成同一个指定的值。下面是它的一个示例代码:

int[] arr = new int[5];
Arrays.fill(arr, 1); // 将数组中所有元素都替换成1
for(int i=0; i<arr.length; i++){
    System.out.print(arr[i] + " ");
}

输出结果为:1 1 1 1 1

八、Arrays.equals()函数

Arrays.equals()函数可以比较两个数组是否完全相同(即数组长度相等,每个元素也相等)。下面是它的一个示例代码:

int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(Arrays.equals(arr1, arr2)); // 输出true,表示arr1和arr2完全相同

九、Arrays.asList()函数

Arrays.asList()函数可以将一个数组转换成一个List。下面是它的一个示例代码:

String[] strs = {"hello", "world", "java"};
List<String> list = Arrays.asList(strs); // 将strs转换成一个List
System.out.println(list); // 输出结果为[hello, world, java]

值得注意的是,使用Arrays.asList()转换的List不能进行增删操作。

十、Arrays.stream()函数

Arrays.stream()函数可以将一个数组转换成一个Stream。下面是它的一个示例代码:

int[] arr = {2,4,5,7,8};
IntStream stream = Arrays.stream(arr); // 将arr转换成一个IntStream
stream.forEach(System.out::println); // 逐个输出arr中的元素

由于Arrays.stream()函数返回的是一个Stream,可以进行各种流式处理(如filter、map、sorted等)。

总结

在本文中,我向大家介绍了Java中实现数组排序和搜索的10个函数。这些函数可以极大地简化我们对数组的操作,提高程序开发效率。大家可以根据自己的需要选择适合自己的函数使用。