我正在开发一个 Java 项目,我必须将有序对的二维数组转换为整数数组。
为了阐明我需要什么,请将以下数组作为示例:
int [][] arrayUno = {{0,1},{1,0},{2,1},{2,2},{1,1},{1,2},{0,2},{2,0},{0,0}}
假设我们有另一个相同长度的数组:
int [][] arrayDos = {{0,0},{0,1},{0,2},{1,0},{1,1},{1,2},{2,0},{2,1},{2,2}}
每个有序对在每个数组中都是唯一的(表示作业/机器的特定组合,即 {0,2} 是作业 0 在机器 2 中的操作)。
我想要 arrayDos 中 arrayUno 的每个元素(有序对)的位置。结果必须是:
{2,4,8,9,5,6,3,7,1}
例如arrayUno({0,1})的第一个元素在arrayDos的2°位置;arrayUno的元素{1,0}在arrayDos的4°位置;arrayUno的元素{2,1}在arrayDos的8°位置,依此类推。
import java.util.Arrays;
public class OrderedPair {
public static void main(String[] args) {
int[][] arrayOne = {{0, 1}, {1, 0}, {2, 1}, {2, 2}, {1, 1}, {1, 2}, {0, 0}, {2, 0}, {0, 2}};
int[][] arrayTwo = {{0, 0}, {0, 1}, {0, 2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}};
OrderedPair pair = new OrderedPair();
int[] transformed = pair.transform(arrayOne, arrayTwo);
System.out.println(Arrays.toString(transformed));
}
private int[] transform(int[][] dictionary, int[][] lookup) {
int[] result = new int[dictionary.length];
for (int index = 0; index < lookup.length; index++) {
int[] pair = lookup[index];
int indexOf = -1;
for (int dictionaryIndex = 0; dictionaryIndex < dictionary.length; dictionaryIndex++) {
int[] dictionaryPair = dictionary[dictionaryIndex];
if (dictionaryPair[0] == pair[0] && dictionaryPair[1] == pair[1]) {
indexOf = dictionaryIndex;
break;
}
}
if (indexOf != -1) {
result[index] = indexOf;
}
}
return result;
}
}
我期望输出:{2,4,8,9,5,6,3,7,1}
但输出是:{8,0,6,1,4,5,7,2,3}
动漫人物
茅侃侃
相关分类