是否可以在单个数组元素中存储多个对象,如果可以,最好的方法是什么?
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 回答