14.2.1.1.2 セッションバインド・コレクション
グラフを必要とせずに、セッション内でコレクションを直接作成および操作できます。セッションバインド・コレクションは、さらに、グラフ・アルゴリズムにパラメータとして渡すことや、他のコレクション・オブジェクトと同様に使用することができます。次の各サブセクションでは、これらのコレクションで現在サポートされているタイプについて説明します。
スカラー・コレクション
スカラー・コレクションには、Integer
、Long
、Float
、Double
、Boolean
などの単純なデータ型が含まれます。これらは、PgxSession
APIによって管理できます。
スカラー・コレクションの作成
次のコードに示すように、createSet()
およびcreateSequence()
メソッドを使用してスカラー・コレクションを作成できます。
JShellを使用したスカラー・コレクションの作成
myIntSet = session.createSet(PropertyType.INTEGER, "myIntSet") myDoubleSequence = session.createSequence(PropertyType.DOUBLE) // A name will be automatically generated if none is provided. println myDoubleSequence.getName() // Display the generated name.
Javaを使用したスカラー・コレクションの作成
import oracle.pgx.api.*; import oracle.pgx.common.types.*; ... ScalarSet myIntSet = session.createSet(PropertyType.INTEGER, "myIntSet"); ScalarSequence myDoubleSequence = session.createSequence(PropertyType.DOUBLE); System.out.println(myDoubleSequence.getName());
スカラー・コレクションでの操作の実行
次のコードに示すように、スカラー・コレクションで様々な操作を実行できます。
JShellを使用したスカラー・コレクションでの操作の実行
myIntSet.add(10) myIntSet.addAll([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) myIntSet.addAll([0,1,2]) // Element uniqueness. This operation has no effect on the set. println myIntSet myIntSet.contains(1) // Checks the presence of an element. This code returns `true`. myIntSet.remove(10) myIntSet.removeAll([4, 5, 6, 7, 8, 9]) // Leaves only elements `0, 1, 2, 3`. println myIntSet
Javaを使用したスカラー・コレクションでの操作の実行
import java.util.Arrays; import oracle.pgx.api.*; ... myIntSet.add(10); myIntSet.addAll(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)); myIntSet.addAll(Arrays.asList(0, 1, 2)) myIntSet.contains(1); // Returns `true`. myIntSet.remove(10); myIntSet.removeAll(Arrays.asList(4, 5, 6, 7, 8, 9));
スカラー・コレクションのトラバース
スカラー・コレクションは、イテレータを使用してトラバースすることも、新しいStream APIを使用してトラバースすることもできます。順序の要素をセットに追加し、順序をトラバースして、不要な要素をフィルタで除外した後、残りを別のスカラー・コレクションに追加できます。
JShellを使用したスカラー・コレクションのトラバース
myIntSet.forEach({x -> print x + "\n"}) myIntSet.stream().filter({x -> x % 2 == 0}).forEach({x -> myDoubleSequence.add(x)}) println myDoubleSequence
Javaを使用したスカラー・コレクションのトラバース
import java.util.Iterator; import java.util.stream.Stream; import oracle.pgx.api.*; ... myIntSet.forEach(x -> System.out.println(x)) myIntSet.stream().filter(x -> x % 2 == 0).forEach(myDoubleSequence::add)
親トピック: コレクション・データ型