7.7 常用工具类

 

7.7 常用工具类

在日常软件开发中,我们经常会遇到需要对容器或数组进行查找、排序、反转、甚至打乱等操作的情况。尽管可以手动编写代码来完成这些任务,但这会增加开发的工作量,并且可能无法保证性能。为了解决这些问题,Java提供了两个非常实用的工具类:CollectionsArrays。这两个类包含了许多静态方法,可以方便地执行上述操作。本节将详细介绍Collections工具类和Arrays工具类的使用。

7.7.1 Collections工具类

Collections工具类位于java.util包中,提供了大量的静态方法,用于对集合中的元素进行操作,如排序、查找和修改等。下面将介绍Collections类中的一些常见操作。

添加与排序操作

Collections类提供了多种方法,用于对List集合进行操作,包括添加元素和排序。以下是一些常用的方法:

  • addAll(Collection<? super T> c, T... elements): 将所有指定元素添加到集合中。
  • reverse(List<?> list): 反转列表中元素的顺序。
  • shuffle(List<?> list): 随机打乱列表中元素的顺序。
  • sort(List<T> list): 根据元素的自然顺序对列表进行排序。
  • swap(List<?> list, int i, int j): 将列表中两个指定位置的元素进行交换。
示例代码

考虑以下Java程序,展示了如何使用Collections类中的方法:

import java.util.ArrayList;
import java.util.Collections;

public class Example22 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "C", "Z", "B", "K");
        System.out.println("排序前:" + list);
        Collections.reverse(list);
        System.out.println("反转后:" + list);
        Collections.sort(list);
        System.out.println("按自然顺序排序后:" + list);
        Collections.shuffle(list);
        System.out.println("按随机顺序排序后:" + list);
        Collections.swap(list, 0, list.size() - 1);
        System.out.println("集合首尾元素交换后:" + list);
    }
}

查找与替换操作

Collections类也提供了方法用于查找和替换集合中的元素,这些方法主要适用于List集合。以下是一些常用的方法:

  • binarySearch(List<?> list, Object key): 使用二分查找法搜索指定对象在有序列表中的索引。
  • max(Collection<?> col): 返回给定集合中的最大元素。
  • min(Collection<?> col): 返回给定集合中的最小元素。
  • replaceAll(List<T> list, T oldVal, T newVal): 用新值替换列表中的所有旧值。
示例代码

下面是一个使用这些方法的示例程序:

import java.util.ArrayList;
import java.util.Collections;

public class Example23 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Collections.addAll(list, -3, 2, 9, 5, 8);
        System.out.println("集合中的元素:" + list);
        System.out.println("集合中的最大元素:" + Collections.max(list));
        System.out.println("集合中的最小元素:" + Collections.min(list));
        Collections.replaceAll(list, 8, 0);
        System.out.println("替换后的集合:" + list);
        Collections.sort(list);
        System.out.println("集合排序后为:" + list);
        int index = Collections.binarySearch(list, 9);
        System.out.println("集合通过二分查找方法查找元素9所在索引为:" + index);
    }
}

Collections工具类中还有其他许多有用的方法,有兴趣的读者可以参考Java API文档进行进一步学习。这些工具类的使用可以大大简化Java编程中对集合数据的处理工作。

 

 

7.7.2 Arrays工具类

java.util包中,除了针对集合操作的Collections工具类外,Java还提供了专门针对数组操作的Arrays工具类。这个工具类提供了一系列针对数组的静态方法,使数组操作更加便捷和高效。下面将详细介绍其中一些常用的方法。

1. 使用sort()方法排序

排序是数组操作中最基础的功能之一。Arrays类提供了一个静态的sort()方法,可以快速对数组进行排序。以下是一个使用sort()方法的实例:

示例代码
import java.util.Arrays;

public class Example24 {
    public static void main(String[] args) {
        int[] arr = {9, 8, 3, 5, 2};  // 初始化数组
        System.out.print("排序前:");
        printArray(arr);  // 打印排序前的数组

        Arrays.sort(arr);  // 调用Arrays的sort()方法进行排序
        System.out.print("排序后:");
        printArray(arr);  // 打印排序后的数组
    }

    // 定义打印数组元素的方法
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1)
                System.out.print(arr[i] + ", ");
            else
                System.out.println(arr[i] + "]");
        }
    }
}
运行结果

从输出结果可以看出,数组元素被按照自然顺序从小到大排序。此外,Arrays.sort()方法也支持通过传入比较器参数来按照自定义规则排序,以及选择排序的元素范围。

2. 使用binarySearch()方法查找元素

binarySearch()方法用于在已排序的数组中快速查找指定的元素。此方法使用二分查找算法,是一种非常高效的查找方式。

示例代码
import java.util.Arrays;

public class Example25 {
    public static void main(String[] args) {
        int[] arr = {9, 8, 3, 5, 2};
        Arrays.sort(arr);  // 对数组进行排序
        int index = Arrays.binarySearch(arr, 3);  // 查找元素3
        System.out.println("元素3的索引是:" + index);  // 输出索引位置
    }
}
运行结果

使用Arrays.binarySearch()方法后,元素3在数组中的索引为1(数组已排序)。

3. 使用copyOfRange()方法复制元素

有时候需要复制数组中的一部分元素而不破坏原数组,这时可以使用copyOfRange()方法。

示例代码
import java.util.Arrays;

public class Example26 {
    public static void main(String[] args) {
        int[] arr = {9, 8, 3, 5, 2};  // 原始数组
        int[] copied = Arrays.copyOfRange(arr, 1, 5);  // 复制指定范围的数组元素
        for (int i : copied) {
            System.out.print(i + " ");
        }
    }
}
运行结果

输出的结果将是数组中索引1到4的元素,即8, 3, 5, 2

4. 使用fill()方法替换元素

当需要将数组中的所有元素替换为同一个值时,可以使用fill()方法。

示例代码
import java.util.Arrays;

public class Example27 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4};  // 原始数组
        Arrays.fill(arr, 8);  // 用8替换数组中的每个元素
        for (int i = 0; i < arr.length; i++) {
            System.out.println(i + ":" + arr[i]);
        }
    }
}
运行结果

在调用Arrays.fill(arr, 8)方法后,数组中的每个元素都被替换为8。

Arrays工具类中还包含许多其他有用的方法,如equals(), hashCode(), 和toString()等。这些方法极大地简化了数组操作,并帮助开发者提高编程效率。对于希望深入学习的读者,建议查阅Java API文档以获取更多详细信息。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值