概要
TreeSetは【Java】TreeSetの特徴を分かりやすく解説します。の記事で紹介されている通り、要素の重複を排除し、要素が自動で整列されるコレクションオブジェクトです。値を追加の度にソートしてくれるので、ソート処理を書かなくてよく便利なのですが、TreeSetからは直接index指定で値を取り出すことができないようです。
今回はこのTreeSetを元に、index指定でどうやって値を取り出すか記事を書いてみます。
対応方法
Java Program to Get the TreeSet Element By Indexの記事にある通り、色々やりようはあるのですが、個人的には「Method 2: Using .toArray() Method」にある配列に変換する方法が、シンプルかなと感じました。一度配列に格納した上で、index指定で値を取り出します。
実装サンプル
Javaでは上記の記事にあるような実装でいけますが、ここではScalaで配列に変換する実装サンプルを紹介します。実装のやり方はJavaとほぼ同じですね。
import scala.collection.immutable.TreeSet
object TreeSetToArray extends App {
// 降順に設定する
val ordering = Ordering[Int].reverse
val sampleTreeSet = TreeSet(3, 4, 1, 2)(ordering)
// 4, 3, 2, 1の順になる
println(sampleTreeSet)
// 配列に変換
val sampleArray = sampleTreeSet.toArray
// index1を指定した場合は「3」が返る
println(sampleArray(1))
}