1

我需要在 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 是否已经存在。不过,我想我可能做的不对。

谢谢你的帮助!

4

3 回答 3

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);
}

请注意使用泛型( 中的位)来定义和可以包含<>的 Object 的类型。ListMap

您可以访问存储在Mapusing中的值listMap.get(listname);

于 2012-11-19T20:51:16.997 回答
1

如果我理解正确,请创建一个列表列表,或者更好的是,创建一个映射,其中键是您想要的动态名称,值是新创建的列表。将其包装在另一个方法中并像createNewList("name").

于 2012-11-19T20:51:19.650 回答
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 流,这些流将被输入到数组中,但每个都有非常不同的含义(trustertrustee)。您是否尝试从文件或用户输入中读取这些内容?有更好的方法来处理这个问题,如果你在下面评论你的意思,我会更新一个建议的解决方案。

于 2012-11-19T20:54:33.510 回答