![](/img/trans.png)
[英]How to split a collection into multiple collections based on the same elements of objects?
[英]How to build a collection based on Cartesian product of all elements of other collections?
你可以根据几个数组/其他集合中项目的完整迭代,共享任何在Scala中创建不可变集合的好解决方案吗?
例如,在Java中,您可以使用:
List<String> signals = ...;
List<SignalState> states = ...;
List<SignalAndState> result = new ArrayList<~>(signals.size() * states.size());
for (String signal: signals) {
for (SignalState state: states) {
// some if() condition or process() function can be here
result.add(new SignalAndState(signal, state))
}
}
使用Scala构建smth的最佳实践是什么? 我认为,相同的方法(在for()中使用for())是个坏主意,并且根本不兼容Scala语言的对象功能。
我不知道最好的做法,但你可以做到这一点的方法之一是我们使用for
理解去创造你正在寻找的集合:
val signals = List[String](...)
val states = List[SignalState](...)
for(signal <- signals; state <- states) yield new SignalAndState(signal, state)
这应该产生一个包含所有元素的List[SignalAndState]
或者,您可以使用flatMap
和map
来完成相同的结果,例如:
signals flatMap ( signal => states map ( state => new SignalAndState(signal, state)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.