我目前正在尝试将一些 Java 代码转换为 Scala 代码。挑战在于确保与原始 Java 代码相比,转换后的 Scala 代码最终不会做一些非常低效的事情。例如,当尝试转换以下代码时:
class Person {
String name;
Integer age;
Character gender;
}
public class TestJava {
public static void main(String[] args) {
final List<Person> persons = new ArrayList<>();
final List<Person> males = new ArrayList<>();
final List<Person> aNames = new ArrayList<>();
final List<Person> seniors = new ArrayList<>();
for (final Person p: persons) {
if (p.gender == 'm') {
males.add(p);
}
if (p.age >= 60) {
seniors.add(p);
}
if (p.name.startsWith("a")) {
aNames.add(p);
}
}
}
}
由于 Java 依赖于变异,因此这段代码看起来合乎逻辑。但是,现在我想将其转换为等效的 Scala ,而无需多次循环集合(在本例中为 3 次)。
我当然可以使用List
Scala 库中的 mutable 并实现与 Java 所做的相同的事情,但想知道是否可以从给定的序列/集合以函数/Scala 方式生成多个集合,而无需n
在集合中迭代n
是标准计数。提前致谢!