将多维数组中的文本替换为Java中另一个多维数组中的另一个文本

时间:2013-03-17 09:25:29

标签: java arrays multidimensional-array

我一直在努力寻找以下方案的解决方案,

我有以下多维数组,

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

2 个答案:

答案 0 :(得分:1)

对于MapString[][],最简单的方法可能是使用b1而不是c1。您可以像这样构建地图:

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

(或者,您可以直接构建地图,而不是首先构建b1c1数组。)然后您可以执行以下操作:

for (String[] item : a1) {
    item[1] = b1Map.get(item[1]);
    item[2] = c1Map.get(item[2]);
}

答案 1 :(得分: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];
        }
    }
}