現在、Java コードを Scala コードに変換しようとしています。課題は、変換された Scala コードが元の Java コードと比較して非常に非効率的なことをしないようにすることです。たとえば、次のコードを変換しようとする場合:
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 はミューテーションに依存しているため、このコードは論理的に見えます。しかし、コレクションを複数回 (この場合は 3 回) ループすることなく、これを Scala の同等のものに変換したいと考えています。
もちろん、Scala ライブラリの mutableList
を使用して、Java と同じことを達成できますが、特定のシーケンス/コレクションから関数型/Scala の方法で複数のコレクションを生成できるかどうか疑問に思っていましたn
。n
基準カウントです。前もって感謝します!