0
Scalaでjava.util.HashSet
を慣用的に反復する方法を知りました。現在、私は素晴らしいとは思わないwhileループでJavaイテレータを使用しています。scala iterate java hashSet
また、変更可能な拡張可能なバッファが効率的かどうか、または不要なオブジェクトの作成を回避する可能性があるのだろうかと思います。
import java.util
import scala.collection.generic.Growable
import scala.collection.mutable
val javaSet = new util.HashSet[String]()
javaSet.add("first")
javaSet.add("second")
val result: collection.Seq[String] with Growable[String] = mutable.Buffer[String]()
val itr = javaSet.iterator
while (itr.hasNext) {
result += itr.next
}
result
編集
stream
が良いでしょうか? Apache Spark: Effectively using mapPartitions in Java
私は見る。しかし、これは実際に効率的でしょうか?スパーク・ジョブのmapPartitionsメソッドでこのメソッドを呼び出す必要があるため、不要なオブジェクトを作成しないことをお勧めします。 –
これはあなたの心配ではありません。スパークジョブを実行する際の心配は、ネットワークシャッフルトラフィックを最小限に抑え、ガベージコレクションをチューニングすることです。また、証明されていない問題の解決策を探す時間を費やしています。 [時期尚早な最適化は、プログラミングにおけるすべての悪(または少なくともそのほとんど)の根源です。](https://en.wikiquote.org/wiki/Donald_Knuth) – Vidya