我目前在列表上遇到问题。 列表看起来像这样
a b c d
a d
a c
d b
...
第一行是一个索引,使用后将被删除。其余的将在以后使用。
while ((strLine = br.readLine()) != null) {
line.add(strLine);
}
//...
line.remove(0);
通过这种方式创建列表(“行”)。 现在,我想通过删除空格再次拆分列表。
任何帮助将不胜感激! 预先谢谢你!
答案 0 :(得分:0)
如您在评论中所述,您需要
['a', 'b', 'c', 'd', 'a', 'd', ...]
如果输入的是此列表:
a b c d
a d
a c
d b
...
所以您知道了如何完成此操作:
["a b c d", "a d", "a c", "d b", ...]
我将告诉您进一步的步骤。将此列表设为lines
。
现在,遍历lines
的所有元素,然后遍历该元素的每个字符,并将所需的信息保存在另一个List
中。
for (String line: lines) {
for (char chr: line) {
if (chr == ' ') {
continue;
} else {
characters.add(chr);
}
}
}
现在您的characters
列表将如下所示
['a', 'b', 'c', 'd', 'a', 'd', ...]
答案 1 :(得分:0)
分割每行和过滤器空间。忽略循环中的第一行:
boolean firstLine = true;
List<List<Character>> chars = new ArrayList<>();
while ((strLine = br.readLine()) != null) {
if (firstLine) {
firstLine = !firstLine;
continue;
}
chars.add(strLine.chars().filter(e -> e != ' ').mapToObj(e -> (char) e).collect(Collectors.toList()));
}
Chars包含以下输出:[['a','b'],['c','d']]
答案 2 :(得分:0)
如果我在评论中正确理解,则需要以下输入:
a b c d
a d
a c
d b
c a
成为以下两个列表(输入的第一行被忽略):
List 1: [a, a, d, c] (the characters in the first column)
List 2: [d, c, b, a] (the characters in the second column)
由于您已经完成了一部分工作(将输入行放入列表中并删除第一行),所以我将从那里继续:
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
for(String line : lines){
String[] splitLine = line.split(" ");
list1.add(splitLine[0]);
list2.add(splitLine[1]);
}
这将每行按空格分开,并将第一个字符放在第一个列表中,第二个字符放在第二个列表中。
如果您确实需要两个数组而不是列表,则可以执行以下操作:
int amountOfLines = lines.size();
String[] array1 = new String[amountOfLines];
String[] array2 = new String[amountOfLines];
for(int i = 0; i < amountOfLines; i++){
String[] splitLine = lines.get(i).split(" ");
array1[i] = splitLine[0];
array2[i] = splitLine[1];
}
答案 3 :(得分:0)
String[] strArray = new String[letters.size()];
strArray = letters.toArray(strArray);
letters.clear();
for(String A:strArray) {
String[] arrOfStr = A.split(" ");
for(String B:arrOfStr) {
letters.add(B);
}
}
输出看起来像这样
[a, b, c, d, a, d, a, c, d, b]
答案 4 :(得分:0)
Java 8(功能)版本:
Files.lines(Paths.get(filename), StandardCharsets.ISO_8859_1)
.flatMap(x -> Arrays.stream(x.split("\\s+")))
.collect(toList()));
// or if your data set is large and you don't really need it all in one list:
// .forEach(doSomethingUsefulWithEachIndividualWord);