我有一个具有r
行和c
列的矩阵。我已将矩阵存储在二维数组中。见下图。
我在每一行中找到最小数量。如果最小数量位于第一列,我将最小值添加到 listC1。
考虑上图。
在第一行 R1 最小数字是2
,它位于 C1 列中,我想将 2 添加到listC1
. 在第二行 R2 最小数字是4
,它位于 C3 列我想添加 4 listC3
。在第三行 R3 最小数字是5
,它位于 C2 列中,我想将 5 添加到listC2
. 简而言之,如果最小数字在第一列,我将在第一列添加最小数字listC1
,如果最小数字在第二列,我将在第二列添加最小数字listC2
,如果最小数字在第三列,我将添加第三个列表中的最小数量listC3
等等。
现在我面临的问题是如何创建一个列表列表来实现上述逻辑。我已经开发了一些代码(见下文),但它不能正常工作。请在这方面帮助我
Note: Ther number of columns may vary from 3 to 30
final float[][] matrix = {
{2f, 8f, 5f},
{9f, 7f, 4f},
{8f, 5f, 6f},
{7f, 3f, 9f},
{1f, 5f, 5f},
{8f, 7f, 5f},
};
Map<Integer, ArrayList<Float>> minsMap = new LinkedHashMap<>();
for(int row=0; row < matrix.length; row++)
{
float min = Float.MAX_VALUE;
int mc = 0;
for(int col=0; col < matrix[row].length; col++)
{
if(matrix[row][col] < min)
{
min = matrix[row][col];
mc = col;
}
ArrayList<Float> minList = minsMap.get(mc);
if(minList == null)
{
minList = new ArrayList<>();
minsMap.put(mc, minList);
}
minList.add(min);
}
}
for(java.util.Map.Entry<Integer, ArrayList<Float>> e : minsMap.entrySet())
{
System.out.println("Min values in column " + e.getKey() + ": " + e.getValue());
}