获取Java列表的子列表,而不创建新列表?

问题描述 投票:0回答:1

我有一个 Java 列表,我需要获取它的子列表。我试图避免创建一个新列表并填充它,是否可以创建一个位于内存中同一点的列表,只是更短?

double[] list1 = {1, 2, 3, 4};

// later:
double[] list2 = list1[0:2] //?

在上面的示例中,我希望

list2
成为 0 到 2 的子列表 (
{1, 2}
)。 这可能吗?或者我应该改用 ArrayLists
sublist
方法?我正在努力避免这种情况。

我试图避免使用 ArrayList,因为我使用的库需要参数为

double[]
列表。

java list arraylist
1个回答
0
投票

在Java中,数组不像其他一些数据结构那样直接支持子列表的概念,并且您无法创建对数组中特定范围的元素的视图或引用。如果您想使用类似子列表的结构,您可能必须使用

ArrayList
或类似的类。

如果您仅限于使用

double[]
并且希望避免显式创建新数组,则可以通过操作索引来实现类似的效果。下面是从现有数组创建“子列表”的示例方法:

public class Main {
    public static void main(String[] args) {
        double[] list1 = {1, 2, 3, 4};

        // Get a sublist-like array
        double[] list2 = subArray(list1, 0, 2);

        // Print the result
        for (double value : list2) {
            System.out.println(value);
        }
    }

    // Method to create a sublist-like array
    private static double[] subArray(double[] array, int startIndex, int endIndex) {
        int length = endIndex - startIndex + 1;
        double[] result = new double[length];

        for (int i = 0; i < length; i++) {
            result[i] = array[startIndex + i];
        }

        return result;
    }
}

此方法使用原始数组 (

result
) 中指定范围的元素创建一个新数组 (
array
)。请记住,这不如使用
ArrayList
subList
方法高效,特别是当您需要对子列表执行多个操作时。

© www.soinside.com 2019 - 2024. All rights reserved.