Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Java のコレクション

💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。

Flix は Java のコレクションとの相互変換をサポートしています。

以下では、次のインポートエイリアスを使用します:

import java.util.{List => JList}
import java.util.{LinkedList => JLinkedList}
import java.util.{ArrayList => JArrayList}
import java.util.{Set => JSet}
import java.util.{TreeSet => JTreeSet}
import java.util.{Map => JMap}
import java.util.{TreeMap => JTreeMap}

次の関数は Adaptor モジュールで利用できます:

Flix から Java へ

次の関数は Flix のコレクションを Java のコレクションに変換します:

///
/// リスト
///
def toList(ma: m[a]): JList[a] \ IO + Aef[m] with Foldable[m]
def toArrayList(ma: m[a]): JArrayList[a] \ IO + Aef[m] with Foldable[m]
def toLinkedList(ma: m[a]): JLinkedList[a] \ IO + Aef[m] with Foldable[m]

///
/// セット
///
def toSet(ma: m[a]): JSet[a] \ IO + Aef[m] with Order[a], Foldable[m]
def toTreeSet(ma: m[a]): JTreeSet[a] \ IO + Aef[m] with Order[a], Foldable[m]

///
/// マップ
///
def toMap(m: Map[k, v]): JMap[k, v] \ IO with Order[k]
def toTreeMap(m: Map[k, v]): JTreeMap[k, v] \ IO with Order[k]

各関数は新しいコレクションを構築し、すべての要素をそこにコピーします。そのため、各操作には少なくとも線形時間がかかります。結果は通常の Java コレクションであり、変更することもできます。

Java から Flix へ

次の関数は Java のコレクションを Flix のコレクションに変換します:

/// リスト
def fromList(l: JList[a]): List[a]

/// セット
def fromSet(l: JSet[a]): Set[a] with Order[a]

/// マップ
def fromMap(m: JMap[k, v]): Map[k, v] with Order[k]

各関数は Java のコレクションから新しい Flix のコレクションを構築します。そのため、各操作には少なくとも線形時間がかかります。なお、SetMap については、Flix のコレクションは a に定義された Order[a] インスタンスを使用します。これは Java が使用する順序と同じであるとは限りません。

警告: プリミティブ値を持つ Flix や Java のコレクションを変換する際には、特別な注意が必要です。特に、変換の前に値を手動でボックス化(boxing)またはアンボックス化(unboxing)しなければなりません。