java - int 数组到 ArrayList 的转换

标签 java arrays arraylist max min

我有一个获取原始数据数组(int)的函数,我需要返回两个元素组成的数组:最小数和最大数。如果数组的长度为 1,则仅返回数组的前两个元素 int。我想出了这样的解决方案:

public static int[] minMax(int[] arr) {
    if (arr.length==1)
        return new int[]{arr[0],arr[0]} ;// return if arr is 1 element
    else {
        ArrayList<Integer> ar = new ArrayList<Integer>();
        //?
        return new int[]{Collections.max(ar),Collections.min(ar)};
    }
}

但是如何将数组转换为ArrayList?也许有更有效的方法吗?

最佳答案

通过调用 Collections.minCollections.max,您将迭代该数组两次。您可以通过流式传输阵列并让它完成繁重的工作来减少这个时间,如 James Mudd suggested 。但是,请注意,这样做会浪费时间计算总和并累加您不关心的元素计数。自己计算这些可能会更有效:

public static int[] minMax(int[] arr) {
    // Assuming arr has at least one element
    int min = arr[0];
    int max = arr[0];
    for (int i = 1; i < arr.length; ++i) {
        int curr = arr[i];
        if (curr < min) {
            min = curr;
        } else if (curr > max) {
            max = curr;
        }
    }
    return new int[]{min, max};
}

关于java - int 数组到 ArrayList 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73020396/

相关文章:

java - Arraylist.get 返回 null

Android - 跨运行时更改保留大型数组列表的最佳方法

java - 从数组添加到 ListArray

Java - 在排序数组中查找最不常见的整数

ios - 如何检查 2 个数组是否具有相同的元素,如果有,则从其中一个数组中删除该元素?

c++ - 二维容器结构数组的构造函数

JavaScript 不会从特定数组列表中随机选择名称

java - Powermock 和 FileUtils 包

java - 将鼠标悬停在 Java 中的多个按钮上?

javascript - 无法两次推送到同一个数组