2

Java で RDF ステートメントを作成しています。2 つの HashSet があり、たとえば、両方を TreeSet に追加したいと考えています。これが私のコードです:

Collection<Statement> model = new HashSet<Statement>();
Collection<Statement> model_1 = new HashSet<Statement>();
Collection<Statement> treeSet = new TreeSet<Statement>();

これら 2 つの Hashset にいくつかのステートメントを格納した後、両方とも TreeSet に追加しました。コードは次のとおりです。

treeSet.addAll(model);
treeSet.addAll(model_1);
for (Statement _state : treeSet)
     System.out.println(_state);

最初のハッシュセット「モデル」が TreeSet に追加され、次に 2 番目のハッシュセット「model_1」がそれぞれ追加されると思いました。TreeSet をループすると、順序付けられていないようです。最初の HashSet と 2 番目の HashSet をそれぞれそのまま追加できるように、TreeSet の要素を並べ替える方法を教えてください。

4

1 に答える 1

3

TreeSet、要素を入れた順序ではなく、入れた要素に基づいて順序付けされます。Listハッシュ機能が必要ない場合はシンプルで十分な場合があります。または、LinkedHashSet (反復中に挿入順序を維持する) を使用することもできます。

Set インターフェイスのハッシュ テーブルとリンク リストの実装。反復順序は予測可能です。この実装が HashSet と異なる点は、そのすべてのエントリを実行する二重リンク リストを維持することです。このリンクされたリストは、要素がセットに挿入された順序 (挿入順序) である反復順序を定義します。要素がセットに再挿入されても、挿入順序は影響を受けないことに注意してください。(呼び出しの直前に s.contains(e) が true を返すときに s.add(e) が呼び出されると、要素 e はセット s に再挿入されます。)

于 2013-11-07T12:47:18.273 に答える