Java 将输入拆分两次

Java 将输入拆分两次,java,list,split,Java,List,Split,我目前在列表方面遇到了一个问题。 列表如下所示 a b c d a d a c d b ... ['a', 'b', 'c', 'd', 'a', 'd', ...] [a, b, c, d, a, d, a, c, d, b] 第一行是索引,在使用后将被删除。其余的将在以后需要 while ((strLine = br.readLine()) != null) { line.add(strLine); } //... line.remove(0); 这样就创建了一个列表(“行”)。

我目前在列表方面遇到了一个问题。 列表如下所示

a b c d
a d
a c
d b
...
['a', 'b', 'c', 'd', 'a', 'd', ...]
[a, b, c, d, a, d, a, c, d, b]
第一行是索引,在使用后将被删除。其余的将在以后需要

while ((strLine = br.readLine()) != null)   {
line.add(strLine);
}
//...
line.remove(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", ...] 
我会告诉你进一步的步骤。将此列表设为

现在,循环检查
行的所有元素,然后循环检查该元素的每个字符,并将所需信息保存在另一个
列表中

for (String line: lines) {
    for (char chr: line) {
        if (chr == ' ') {
            continue;
        } else {
            characters.add(chr);
        }
    }
}
现在,您的
字符列表将如下所示

a b c d
a d
a c
d b
...
['a', 'b', 'c', 'd', 'a', 'd', ...]
[a, b, c, d, a, d, a, c, d, b]

拆分每行并过滤空间。忽略循环中的第一行:

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()));
}
boolean firstLine=true;
列表字符=新的ArrayList();
而((strLine=br.readLine())!=null){
如果(第一线){
firstLine=!firstLine;
继续;
}
添加(strLine.chars().filter(e->e!='').mapToObj(e->(char)e.collect(Collectors.toList());
}

Chars包含输出:['a','b',['c','d']]

如果我在注释中理解正确,您需要以下输入:

a b c d
a d
a c
d b
c a
要成为以下两个列表(忽略第一行输入):

由于您已经完成了部分工作(将输入行放入列表中并删除第一行),因此我将继续:

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]);
}
List list1=new ArrayList();
List list2=新的ArrayList();
用于(字符串行:行){
String[]splitLine=line.split(“”);
列表1.add(拆分行[0]);
列表2.添加(拆分行[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];
}
int-amountOfLines=lines.size();
字符串[]数组1=新字符串[amountofline];
String[]array2=新字符串[amountofline];
for(int i=0;i

输出将如下所示

a b c d
a d
a c
d b
...
['a', 'b', 'c', 'd', 'a', 'd', ...]
[a, b, c, d, a, d, a, c, d, b]
Java 8(功能)版本:


我不知道你在问什么。使用拆分功能?输入中是否有空格行?是否希望
[“abcd”,“ad”,“ac”,“db”,…]
?现在列表看起来是这样的[“a b c d”,“a d”,“a c”,“d b”,…],我想删除空格。没有“ListName”。但是拆分函数。你能在你的问题中提供一个输入和输出的适当例子吗?!这让我有点尴尬,因为我没有想到这种方法。我想我会更复杂。谢谢。
[['a',b',['c',d']]
,这是请求吗?@dude coder是的,在下面的最后一条评论中question@DudeCoder基于,这就是他想要实现的。。不过,他对实际问题的描述确实说明了另一个问题。