我需要在while循环中创建一个Arraylist,其名称也基于循环中的变量。这就是我所拥有的:
while(myScanner.hasNextInt()){
int truster = myScanner.nextInt();
int trustee = myScanner.nextInt();
int i = 1;
String j = Integer.toString(i);
String listname = truster + j;
if(listname.isEmpty()) {
ArrayList listname = new ArrayList();
} else {}
listname.add(truster);
i++;
}
变量truster在扫描时会出现多次,因此if语句试图检查arraylist是否已经存在。不过,我想我可能已经做到了这一点。
感谢您的帮助!
答案 0 :(得分:6)
将ArrayLists存储在Map中:
Map<String, List<String> listMap = new HashMap<String,List<String>>();
while (myScanner.hasNextInt()){
// Stuff
List<String> list = new ArrayList<String>();
list.add(truster);
listMap.put(listname, list);
}
请注意使用泛型(<>
中的位)来定义List
和Map
可以包含的对象类型。
您可以使用Map
listMap.get(listname);
中存储的值
答案 1 :(得分:1)
如果我理解正确,请创建列表列表,或者更好的是,创建一个映射,其中键是您想要的动态名称,值是新创建的列表。用另一种方法包装它并将其称为createNewList("name")
。
答案 2 :(得分:1)
真的不确定你的意思,但你的代码有一些严重的根本缺陷,所以我会解决这些问题。
//We can define variables outside a while loop
//and use those inside the loop so lets do that
Map trusterMap = new HashMap<String,ArrayList<String>>();
//i is not a "good" variable name,
//since it doesn't explain it's purpose
Int count = 0;
while(myScanner.hasNextInt()) {
//Get the truster and trustee
Int truster = myScanner.nextInt();
Int trustee = myScanner.nextInt();
//Originally you had:
// String listname = truster + i;
//I assume you meant something else here
//since the listname variable is already used
//Add the truster concated with the count to the array
//Note: when using + if the left element is a string
//then the right element will get autoboxed to a string
//Having read your comments using a HashMap is the best way to do this.
ArrayList<String> listname = new ArrayList<String>();
listname.add(truster);
trusterMap.put(truster + count, listname);
i++;
}
此外,您将在myScanner中存储一个Ints流,这些Int流将被输入到数组中,但每个都具有非常不同的含义(truster
和trustee
)。您是否尝试从文件或用户输入中读取这些内容?有更好的方法来处理这个问题,如果你在下面用你的意思发表评论,我会用建议的解决方案进行更新。