如何根据List的大小创建新变量?

时间:2010-05-11 12:26:27

标签: java

我有List大小 n ,我必须动态创建n变量,即我想根据列表的大小动态创建变量。我怎样才能做到这一点?

假设ListList<Integer> year,其中包含 n 元素;

然后我必须从上面的列表中创建 n Integer变量。

编辑:如果我有包含3个元素的列表,我想创建3个变量,如

a = list(0);
b = list(1);
c = list(2);

这样的列表可能有任意数量的元素,然后我必须创建那么多的变量。希望我现在很清楚。

感谢。

2 个答案:

答案 0 :(得分:7)

您无法像建议的那样创建n局部变量。 (他们的名字是什么?)

您需要将变量(或更确切地说是整数值)存储在List或其他Collection中,并在循环中填充它们:

int n = year.size();
List<Integer> theIntegers = new ArrayList<Integer>(n);
for (int i = 0; i < n; i++)
    theIntegers.add(i);

给你year.size()个整数(0,1,2,...)。

然后,您可以通过

访问整数
theIntegers.get(4);

如果要读取索引为4和

的整数
theIntegers.set(4, 10);

如果要将索引为4的整数更新为值10。


在这种情况下你也可以创建一个数组:

int[] ints = new int[year.size()];
for (int i = 0; i < ints.length; i++)
    ints[i] = i;

答案 1 :(得分:0)

我无法在Java中知道动态地向范围添加变量。您可以使用地图作为变量的类型......好吧,映射:

final List<Integer> years = getYearList();
final Map<String, Integer> yearMapping = new HashMap<String, Integer>();
for(int year : years)
{
    final String name = generateNameForYear(year);
    yearMapping.add(name, new Integer(year));
}

// Later... Get "variables" out of the map:
final String variableName = "fooYear";
if (yearMapping.containsKey(variableName))
{
    final Integer variableValue = yearMapping.get(variableName);
}
else
{
    // "variable" does not exist.
}