У меня есть матрица с r
строк и c
столбцов. Я храню матрицу в 2-D массиве. См. Рисунок ниже.Как реализовать 2D-список?
я найти минимальное число в каждой строке. если минимальное число лежит в первой колонке, я добавляю минимум в 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());
}
Что значит «это не работает должным образом»? Что он делает/не делает конкретно? – drewmoore
Вы можете сначала инициализировать и добавить все пустые вложенные группы, затем использовать что-то вроде 'group.get (atIndex) .add (minValue);' – assylias
Вы можете проверить [Таблицу] Guava (http: //docs.guava-libraries). googlecode.com/git/javadoc/com/google/common/collect/Table.html) – jontejj