2016-03-08 174 views
0

我想基于现有变量的值创建列表名称。例如如何根据定义变量的值定义列表名称

double x; 
x = 1.23 

List<Something> x = new ArrayList<>(); 
x.add(new Something(Blah, Blah)); 

当然,这告诉我x已经被定义。我如何使列表的名称成为现有变量的值?

+0

为什么你想/需要这样做? –

+0

你不能这样做。 –

+0

我必须循环访问数据库中的超过150亿行数据,并根据行的值将数据添加到多个列表。我需要根据多行数据可能使用同一列表的数据行中的值创建列表,以便它们需要添加到现有列表中,否则将创建一个新列表。然后,一旦我有了列表,我将它们排序并遍历列表以执行一些统计函数。 – mithrix

回答

1

基于您的评论,你需要“通过数据库中的数据的几行迭代,将数据添加到基于该行的值多个列表”,你可以组织你的for循环是这样的:

double x = 1.23 

Map<Double, List<Something>> map = new HashMap<>(); 
for (;;) { 
List<Something> xValues = null; 
if (map.containsKey(x)) { 
    xValues = map.get(x); 
} else { 
    xValues = new ArrayList<>(); 
    map.put(x, xValues); 
} 
xValues.add(new Something(Blah, Blah)); 
} 

当然x = 1.23的价值可能来自另一个集合或直接从resultset

+0

这会允许我添加到现有的列表吗?例如,如果两行数据具有相同的x值。它是否将这两个值添加到x列表中? – mithrix

+0

是的。 x的值是地图的关键,因此它将与包含前一行数据的现有列表相匹配。 – Saheed

+0

我更新了代码给你的建议,但得到错误'类型参数错误数量2' @saheed – mithrix

1

你不能。你可以写Map<Double, List<Something>>,也可以写map.put(x, myList),但是你不能有动态命名的变量。

+0

这将允许我遍历每个x,mylist?例如,如果列表1中的值是1,2 1,3 1,4 2,5和列表2 1,2 1,3 1,3 1,5 2,5如果我想要对它们进行排序,我将如何遍历每个列表中的值列出并在每个列表上执行统计。 – mithrix

+0

@mithrix当然,你只需遍历'map.entrySet()'。 –

+0

对不起,我该如何使用您在代码中提到的myList。例如,如果我有x的列表名称和1,2的值,我如何将它添加到map.put与map.put(x,myList)? @Louis Wasserman – mithrix