Java中的二维列表/集合

时间:2012-12-17 23:27:14

标签: java

我正在寻找的是一个二维数组的字符串。同一行中的字符串应该是唯一的,但允许行重复。

我正在使用一个列表,其中每一行都是一组:

List<Set<String>> bridges = new ArrayList<Set<String>>();

我有一个返回一组字符串的方法:

Set<String> getBridges(){
    Set<String> temp = new HashSet<String>();
    // Add some data to temp
    temp.add("test1");
    temp.add("test2");
    temp.add("test3");
    return temp;
}

现在在main方法中,我将调用getBridges()来填充我的列表:

List<Set<String>> bridges = new ArrayList<Set<String>>();

Set<String> tempBridge = new HashSet<String>();

for(int j=0;j<5;j++){
            for(int k=0;k<8;k++){
                        // I call the method and store the set in a temporary storage
                tempBridge = getBridges();
                        // I add the the set to the list of sets
                bridges.add(tempBridge);
                        // I expect to have the list contains only 5 rows, each row with the size of the set returned from the method
                System.out.println(bridges.size());
            }
}

为什么我将列表作为大小为5 * 8的一维数组?如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

您的for循环看起来组织不正确。您应该每行只添加bridges一次,而现在您每次都通过内部 for循环添加它,该循环运行5 * 8次。

答案 1 :(得分:0)

您需要修复循环:

List<Set<String>> bridges = new ArrayList<Set<String>>();

Set<String> tempBridge = new HashSet<String>();

for(int j=0;j<5;j++){    
    tempBridge = getBridges();
    bridges.add(tempBridge);
    System.out.println(bridges.size());
}    


Set<String> getBridges(){
    Set<String> temp = new HashSet<String>();
    for(int k=0;k<8;k++){
        // Add some data to temp
        temp.add("test" + Integer.toString(k));
    }
    return temp;
}