0

私が探しているのは、文字列の2次元配列です。同じ行の文字列は一意である必要がありますが、行の重複は許可されます。

各行がセットになっているリストを使用しています。

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の1次元配列として取得するのはなぜですか?これを修正する方法は?

4

2 に答える 2

4

ループforが正しく構成されていないように見えます。行ごとに1回だけ追加する必要がありますが、現在は5*8回実行される内部bridgesループを介して毎回追加しています。 for

于 2012-12-17T23:29:49.000 に答える
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;
}
于 2012-12-18T00:04:51.143 に答える