我的程序得到的输入是一些表示矩阵中的行的字符串。我想把这个矩阵的列放在一个LinkedHashMap中,但是不需要先将所有的数据都存储在一个数组中,然后构造这些列并将它们放到LinkedHashMap中。这个想法应该尽可能快地完成。如何在将字符串存储在数组中之前将其放入HashMap中?
实施例:
输入:
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);
}
到目前为止,您尝试过做什么?显示你的代码并解释你有什么问题 – UnholySheep
我将单个字符存储在一个数组中,然后附加列并将它们存储在LinkedHashMap中,请参阅编辑。我的程序运行速度太慢,这是我可以改进我的程序的唯一部分。 – tomishomo
那么,你可以尝试使用一维字符串数组(而不是分割),然后通过['charAt']访问各个字符(http://docs.oracle.com/javase/7/docs/api/ java/lang/String.html#charAt(int))。你也应该考虑使用'StringBuilder'而不是通过'+ ='追加。你可以尝试的另一件事是在你读完这行之后将字符存储在地图中(并且在每行读取之后追加到存储在地图中的字符串) - 你必须测试这些方法是否足够好 – UnholySheep