1

次のシナリオの解決策を見つけるのに苦労しています。

次の多次元配列があります。

String [][] a1 ={{ New1 , d1, e1 },{ New2 , d2, e2 },{ New3 , d2, e1 },}; 

String [][] b1 ={{ d1, Re1 },{ d2, Re2 },}; 

String [][] c1 ={{ e1, 1 },{ e2, 2 },}; 

文字列配列 a1 の内容を、文字列 b1 および c1 からの適切な識別子に置き換えて、次の出力を取得する必要があります。

String [][] new ={{ New1 , Re1, 1 },{ New2 , Re2, 2 },{ New3 , Re2, 1 },}; 
4

2 に答える 2

1

最も簡単なのは、 forとのMap代わりにを使用することです。次のようにマップを作成できます。String[][]b1c1

Map<String, String> b1Map = new HashMap<String, String>();
for (String[] entry : b1) {
    b1Map.put(entry[0], entry[1]);
}
// similarly for c1

b1(あるいは、最初におよび配列を作成する代わりに、マップを直接作成することもできc1ます。) 次に、次のようにすることができます。

for (String[] item : a1) {
    item[1] = b1Map.get(item[1]);
    item[2] = c1Map.get(item[2]);
}
于 2013-03-17T09:29:32.290 に答える
1

コレクションを使用したくない場合、またはコレクションを使用せずに解決する必要がある場合は、配列を処理することで要件を解決する次のコードのようなことを行うことができます

for(int i=0;i<a1.length;i++){
    for(int j=0;j<b1.length;j++){
        if(b1[j][0].equals(a1[i][1])){
            a1[i][1]=b1[j][1];
        }
    }
    for(int j=0;j<c1.length;j++){
        if(c1[j][0].equals(a1[i][2])){
            a1[i][2]=c1[j][1];
        }
    }
} 
于 2013-03-17T09:49:22.170 に答える