我有一个String []列表,其中包含从数据库返回的一些数据
List<String[]> x;
现在每个“x”我必须存储它的相对Ys。 (想象一下,“x”包含从“SELECT DISTINCT xColumn1,xColumn2 FROM table”返回的元素,现在对于每个元素,我必须存储来自另一个查询的数据)。
Y的元素将存储在这里:
List<List<String[]>> yElements;
我读过我可以声明一个固定长度列表,但我不知道如何。这就是我所做的:
yElements = Arrays.asList(new List<String[]>[x.sixe()]);
Netbeans告诉我“通用阵列创建”错误。
我还想告诉你,我必须有一个固定的长度列表,用于在这个列表列表的特定索引中存储一个String []列表。 (如果你能告诉我如何处理数组,它也会很棒!) 感谢。
答案 0 :(得分:0)
您无法使用new
创建泛型类型数组的实例。
另一种选择是:
import java.lang.reflect.*;
import java.util.*;
public class Test
{
public static void main( String args[] )
{
List<String[]> x = ...;
List<List<String[]>> yElements = Arrays.asList(
(List<String[]>[])Array.newInstance(List.class, x.size()));
}
}
相关问题:How to create a generic array in Java?。 (示例是关于创建泛型类型参数的数组的实例......但是这里适用相同的方法。)
但是,我认为整个问题是基于一个不正确的假设。
我还想告诉你,我必须有一个固定的长度列表,用于在列表列表的特定索引中存储一个String []列表。
您无需拥有固定大小的列表。从计算的角度来看,如果你不添加或删除列表元素,你的代码可以很好地使用非固定大小的列表。 (实际上,使用Arrays.asList
包装数组不会阻止其他代码尝试添加/删除元素...)无论如何...如果你只是做实现类型{ {1}},然后通用数组创建问题就消失了。
此外,我怀疑使用ArrayList<ArrayList<ArrayList<String>>>
作为x.size()
的大小是不正确的。 yElements
的大小可能应该取决于yElements
个实例的数量,而不是给定x
实例的大小。
答案 1 :(得分:0)
如果您希望列表的大小是绝对固定的,则可以使用本机阵列。它们可以是多维的,例如你可以有String[][] x
或`String [] [] [] y'。
然而,老实说,从设计的角度来看,你的方法有点令人困惑,而且不那么清晰。
为什么不像注释中建议的那样,有一个对象同时具有两列(xColumn1,xColumn2),然后将Y元素放在一个单独的对象中,然后可以将它与第一个对象相关联? / p>
这样:
class XDetails
{
String xColumn1;
String xColumn2;
YDetails relatedY;
...
}
class YDetails
{
... fields of Y ...
}
然后你可以有一个数组或List<XDetails>