関数構造 (map、foreach、flatMap など) を使用してコレクションをループする方が良いですか? ダミーの問題として、文字列のリストがあり、さまざまな基準で文字列をフィルタリングし、それらをマップして値を取得したいと考えています。以下のコードを検討してください。
val x1 = list.filter(criteria1).map(do_something)
val x2 = list.filter(criteria2).map(do_something)
このような異なるフィルター基準が 5 つあるとすると、このようにして、リスト (大きい場合があります) を 10 回 (フィルターで 1 回、マップで 1 回) ループします。
ただし、これをすべて 1 つの for ループにグループ化し、1 回の繰り返しで 5 つの新しいリストを返したり入力したりしてから、それぞれをマップして合計 10 回ではなく 6 回のループにすることもできます。
for(i<- 0 to list.length-1){
if(criteria1) //filter
if(criteria2) //filter
}
このコードにより、変更可能なリストを使用せざるを得なくなる場合がありますが、厳密にはパフォーマンスの観点から、そのような状況で関数構造を使用することは理にかなっています。どちらがより良いアプローチでしょうか?
注: 上記のコード/問題は単なる例であり、私が言及している状況の種類を説明してくれることを願っています