如何在将一串字符存储在数组中之前将它们放入 HashMap 中?

How to put a String of characters in a HashMap before storing them in an array?

我的程序得到的输入是一些字符串,代表矩阵中的行。我想将此矩阵的列放入 LinkedHashMap,但无需先将所有内容存储在数组中,然后构造列并将它们放入 LinkedHashMap。这个想法是应该尽快完成。

示例:

输入:

abfad

grgaa

rtwag

应该保存在 LinkedHashMap 中的字符串是:

agr

brt

fgw

aaa

dag

编辑:

我的程序现在是这样做的:

String[][] array = new String[n][m];
LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer, String>();  
for (int i = 0; i < n; i++) {
        array[i] = br.readLine().split("");
}
for (int i = 0; i < m; i++) {
    String column = "";
    for (int j = 0; j < n; j++) {
        column += array[j][i];
    }
    map.put(i, column);
}

我不确定为什么这会被否决。

这是一个有趣的问题,您也许应该问得更好一些。

如果您将其视为矩阵的实时变换,是否有帮助?阅读第一行时应该发生什么?后续每一行应该发生什么?我们假设所有行都具有相同的长度,否则我们需要指定当它们不相同时会发生什么。

你自己试过之后,也许你可以看看下面。我没有用过LinkedHashMap那里,我也用过可变的StringBuilder。但是您可以轻松修改它以使用您选择的数据结构。

public class RealTimeTransform {
    public static void main(String[] args) throws IOException {
        Map<Integer, StringBuilder> columns = new HashMap<>();
        readColumnsFromRows(columns, System.in);
        System.out.println(columns.values());
    }

    private static void readColumnsFromRows(Map<Integer, StringBuilder> columns, InputStream in) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        int rc = 0;
        String row;
        while ((row = reader.readLine()) != null) {
            if (rc == 0) {
                for (int i = 0; i < row.length(); i++) {
                    columns.put(i, new StringBuilder(10).append(row.charAt(i)));
                }
            } else {
                for (int i = 0; i < row.length(); i++) {
                    columns.get(i).append(row.charAt(i));
                }
            }
            rc += 1;
        }
    }
}

这会打印:

aman
plan
yess
[apy, mle, aas, nns]

根据您的规格。