如何使用Arraylist放置列表的元素<;列表<;性格>&燃气轮机;在Java中,可以将其转换为单个列表

如何使用Arraylist放置列表的元素<;列表<;性格>&燃气轮机;在Java中,可以将其转换为单个列表,java,list,arraylist,Java,List,Arraylist,我想问一下如何实现这一点: 输入:列表,输出:字符列表。例如:((a,b),(f,g),(),(k))-->(a,b,&,f,g,&,k) 在两个列表之间,应该有一个-,比如((a,b),(f,g))-->(a,b,&,f,g),如果列表是(),那么作为例子((f,g),(),(k))-->(f,g,&,&,k)有两个-,&,因为在(f,g),()之间应该放一个-,在(),(k)之间应该放一个-。(我已经学会了如何检查异常,但让stuckt花了很长时间来解决这部分任务) 我的代码: 假设P代表列

我想问一下如何实现这一点: 输入:列表,输出:字符列表。例如:((a,b),(f,g),(),(k))-->(a,b,&,f,g,&,k) 在两个列表之间,应该有一个-,比如((a,b),(f,g))-->(a,b,&,f,g),如果列表是(),那么作为例子((f,g),(),(k))-->(f,g,&,&,k)有两个-,&,因为在(f,g),()之间应该放一个-,在(),(k)之间应该放一个-。(我已经学会了如何检查异常,但让stuckt花了很长时间来解决这部分任务) 我的代码:

假设P代表列表
公共类手语者{
公共列表exe1(PA)引发异常{
如果(a==null){
抛出新异常(“a为空”);
}
//下一步该做什么,我不知道
}
}
这样就可以了:

静态列表exe1(列表a){
返回a.stream()
.flatMap(x->Stream.concat(Stream.of('&'),x.Stream())
.skip(1)
.collect(Collectors.toList());
}
试验

System.out.println(exe1(List.of('a','b')、List.of('f','g')、List.of()、List.of('k'));
输出

[a,b,&,f,g,&,k]
这样就可以了:

静态列表exe1(列表a){
返回a.stream()
.flatMap(x->Stream.concat(Stream.of('&'),x.Stream())
.skip(1)
.collect(Collectors.toList());
}
试验

System.out.println(exe1(List.of('a','b')、List.of('f','g')、List.of()、List.of('k'));
输出

[a,b,&,f,g,&,k]

谢谢!我可以问你们一个建议吗:如果我想用java来复习这个主题,我应该复习一下stream吗?还是名单?我试图寻找“列表列表”,但搜索结果总是关于LinkedList。 在我看到你们解决这个问题的方法之后,我想我应该学习一下stream。我不确定我应该复习什么。提前感谢:D@twoStones“我想我应该学习小溪”好主意,去吧“我不确定我应该回顾什么”Streams。@Andreas,是否可以更改Stream.of('&'),x.Stream()的顺序。我试过了,但没能摆脱最后一个“&”。这就是你颠倒顺序并使用skip(1)的原因。@Knowledge\u seeker我没有颠倒顺序,我选择的顺序使移除无关元素变得容易。要反转某些东西需要它已经存在,因为我从头开始编写代码,所以没有什么可以“反转”——删除第一个元素总是比较容易的,因为您可以很容易地判断何时处理第一个元素,但在执行此操作时,您可能不知道正在处理最后一个元素,因为在查找下一个元素之前,您可能不知道它是最后一个元素。当然,您可以在事后删除最后一个,但这需要保存列表。谢谢!我可以问你们一个建议吗:如果我想用java来复习这个主题,我应该复习一下stream吗?还是名单?我试图寻找“列表列表”,但搜索结果总是关于LinkedList。 在我看到你们解决这个问题的方法之后,我想我应该学习一下stream。我不确定我应该复习什么。提前感谢:D@twoStones“我想我应该学习小溪”好主意,去吧“我不确定我应该回顾什么”Streams。@Andreas,是否可以更改Stream.of('&'),x.Stream()的顺序。我试过了,但没能摆脱最后一个“&”。这就是你颠倒顺序并使用skip(1)的原因。@Knowledge\u seeker我没有颠倒顺序,我选择的顺序使移除无关元素变得容易。要反转某些东西需要它已经存在,因为我从头开始编写代码,所以没有什么可以“反转”——删除第一个元素总是比较容易的,因为您可以很容易地判断何时处理第一个元素,但在执行此操作时,您可能不知道正在处理最后一个元素,因为在查找下一个元素之前,您可能不知道它是最后一个元素。当然,您可以在事后删除最后一个,但这需要保存列表。
Suppose P stand of List<List<Character>>
public class HandleListofLists {
public List<Character> exe1 (P a) throws Exception{
if(a == null){
throw new Exception("a is null");
}

// what to do as next step, I have no idea

}
}