0

是否可以在单个数组元素中存储多个对象,如果可以,最好的方法是什么?

4

2 回答 2

1

不,数组的任何给定元素都只是一个元素。不过,元素的类型确实很重要。

考虑一个整数数组:

int[] x = {1, 4, 7, 10};

一个元素不能“容纳”多个元素。

但现在考虑一个整数数组数组:

int[][] x = {
    {1},
    {2, 3},
    {4, 5, 6},
    {7, 8, 9, 10}
};

每个元素仍然只是一个元素。每个 type 有四个元素int[]。然后,每个元素都有一个元素。理论上,您可以根据需要拥有任意多的层。它会很快变得混乱。

将“多个元素融入一个元素”的另一种方法是编写自己的类,该类以对您最有用的任何方式保存多个元素,并制作一个数组。


注意:上面,我使用原始数组来演示。但是,这也适用于 JavaList对象:

ArrayList<Integer> x;  // list of integers

ArrayList<ArrayList<Integer>> x;  // list of ArrayList<Integer> objects, each of which is itself a list of integers

ArrayList<Integer>[] x;  // primitive array of ArrayList<Integer> objects
                         // (I recommend not doing this, it can get confusing)

如果您的问题是将多种类型的对象放在一个元素中,那么您必须弄清楚哪个超类包含这两种类型(通常Object,如果类型远程不同),并将您的列表设为该类型:

Object[] x = {Integer.valueOf(5), Double.valueOf(3.14), "some_string"};

再次取出这些对象并将它们放入正确的类型是很困难的,所以我不推荐这样做。

您也可以尝试构建自己的Union类型,并使列表成为该类型。

于 2020-09-17T18:53:56.803 回答
0

您可以将任何内容存储在Object[]对象数组中。

像这样的东西:

Object[] objArr = new Object[10];
objArr[0] = "String";
objArr[1] = Arrays.asList(1, 2, 4);
objArr[2] = new ArrayList<>(); 
objArr[3] = 1;
于 2020-09-17T19:03:22.623 回答