2010-05-11 40 views
2

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

假设我有List作为List<Integer> yearn中的元素;

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

编辑:如果我有在它与我想创建3个变量像

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

像这样3个要素列表中的列表可以有任意数量的元素,然后我要创建的许多变量。希望我现在清楚。

谢谢。

+3

请选择一个更具描述性的标题。 – 2010-05-11 12:28:11

+0

只需使用新变量创建另一个相同大小的列表?还是我完全错过了这一点?这个问题太模糊了,最初的答案太简单了,以至于很混乱。 – BalusC 2010-05-11 12:28:18

+2

为什么你想创建变量?你不能直接从列表中访问数据吗? – 2010-05-11 12:29:19

回答

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整数读取与索引4和

theIntegers.set(4, 10); 

的整数,到值10.


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

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

+1 - 这似乎更可能是他问的。 :) – 2010-05-11 12:33:39

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. 
} 
+0

你不能在java中有原始类型作为类型参数。需要成为一个类,例如Integer。 – aioobe 2010-05-11 12:36:43

相关问题