パッケージ io.realm

インターフェース ordered<E>

  • すべてのスーパーインターフェース:
    Collection<E>, io.realm.internal.Freezable<RealmCollection<E>>, Iterable<E>, List<E>, io.realm.internal.ManageableObject, RealmCollection<E>
    すべての既知の実装クラス:
    OrderedRealmCollectionSnapshot, RealmList, RealmResults

    public interface OrderedRealmCollection<E>
    extends List<E>, RealmCollection<E>
    OrderedRealmCollectionは、要素の順序付けを維持するコレクションです。 OrderedRealmCollection内のすべての要素にはインデックスがあります。 したがって、各要素にはそのインデックスがアクセスできます。最初のインデックスは 0 です。 通常、 OrderedRealmCollectionは、要素が一意である必要がある Set と比較して、重複要素を許可します。

    OrderedRealmCollectionには 3 つのタイプがあります。 RealmResultsRealmListはライブ コレクションです。 常に最新の状態で、無効なRealmObjectが含まれることはありません。 OrderedRealmCollectionSnapshotは別です。 OrderedRealmCollectionSnapshotは別のOrderedRealmCollectionから作成できます。 サイズと要素の順序は、作成時に元のコレクションと同じままです。 オブジェクトが削除された場合、 OrderedRealmCollectionSnapshotには無効なRealmObjectが含まれる可能性があります。

    イテレータを使用してOrderedRealmCollectionを反復処理するのは常に機能します。 イテレータに影響を与えずに要素を削除または変更できます。 以下の例を参照してください。

     
     RealmResults<Dog> dogs = realm.where(Dog.class).findAll();
     int s = dogs.size(); // 10
     realm.beginTransaction();
     for (Dog dog : dogs) {
         dog.deleteFromRealm();
         s = dogs.size(); // This will be decreased by 1 every time after a dog is removed.
     }
     realm.commitTransaction();
     s = dogs.size(); // 0
     
     

    ライブ コレクションから作成されたイテレータは、イテレータの作成時に安定したビューを作成するため、反復処理中にイテレータに影響を与えずに要素を削除および変更できます。 ただし、イテレータをサポートするRealmResultsは引き続きライブ更新され、反復処理中に要素のサイズと順序が変更される可能性があります。 RealmListRealmResultsと同じ動作をします。どちらもライブ コレクションであるためです。

    単純な for ループは異なります。 以下の例を参照してください。

     
     RealmResults<Dog> dogs = realm.where(Dog.class).findAll();
     realm.beginTransaction();
     for (int i = 0; i < dogs.size(); i++) {
         dogs.get(i).deleteFromRealm();
     }
     realm.commitTransaction();
     s = dogs.size(); // 5
     
     

    上記の例では、 RealmResults内の要素の半分を削除しています。 これは、ループごとにdogs.size()が 1 ずつ減少しているためです。 ループ内で削除が発生すると、 RealmResultsのサイズにすぐに影響します。 この問題を解決するには、OrderedRealmCollectionSnapshot RealmResultsまたは からRealmList を作成し、そのに対して単純な for ループを実行します。

     
     RealmResults<Dog> dogs = realm.where(Dog.class).findAll();
     OrderedRealmCollectionSnapshot snapshot = dogs.createSnapshot();
     // dogs.size() == 10 && snapshot.size() == 10
     realm.beginTransaction();
     for (int i = 0; i < snapshot.size(); i++) {
         snapshot.get(0).deleteFromRealm();
         // snapshot.get(0).isValid() == false
     }
     realm.commitTransaction();
     // dogs.size() == 0 && snapshot.size() == 10
     
     

    ご覧のとおり、削除後も、スナップショットのサイズと要素の順序は以前と同じままです。 ただし、位置の要素は無効になります。

    • メソッドの詳細

      • 最初に

        @Nullable
        E first()
        コレクションから最初のオブジェクトを取得します。
        次の値を返します。
        最初のオブジェクト。
        次の例外がスローされます。
        IndexOutOfBoundsException - コレクションが空の場合。
      • 最初に

        @Nullable
        Eが先頭( @Nullable E defaultValue)
        コレクションから最初のオブジェクトを取得します。 コレクションが空の場合は、指定されたデフォルトが代わりに使用されます。
        次の値を返します。
        最初のオブジェクトまたは指定されたデフォルトの 。
      • last

        @Nullable
        E last()
        コレクションから最後のオブジェクトを取得します。
        次の値を返します。
        最後のオブジェクト。
        次の例外がスローされます。
        IndexOutOfBoundsException - コレクションが空の場合。
      • last

        @Nullable
        Elast ( @Nullable E defaultValue)
        コレクションから最後のオブジェクトを取得します。 コレクションが空の場合は、指定されたデフォルトが代わりに使用されます。
        次の値を返します。
        最後の オブジェクトまたは指定されたデフォルトの 。
      • sort

        RealmResults < E > sort( string fieldName)
        指定された フィールドに基づいてコレクションを昇順でソートします。
        パラメーター:
        fieldName - 並べ替えるフィールド名。 ブール値、短縮、int、long、float、double、Date、string 型のフィールドのみがサポートされます。
        次の値を返します。
        新しいソートされたRealmResultsが作成され、返されます。 元のコレクションは変更されません。
        次の例外がスローされます。
        IllegalArgumentException - フィールド名が存在しないか、無効なタイプがある場合。
        IllegalStateException - Realm が閉じている、間違ったスレッドで呼び出された、またはコレクションが管理されていないコレクションの場合。
      • sort

        RealmResults < E > sort( string fieldName, Sort sortOrderer)
        指定されたフィールドとソート順序に基づいてコレクションをソートします。
        パラメーター:
        fieldName - 並べ替えるフィールド名。 ブール値、短縮、int、long、float、double、Date、string 型のフィールドのみがサポートされます。
        sortOrder - 並べ替える方向。
        次の値を返します。
        新しいソートされたRealmResultsが作成され、返されます。 元のコレクションは変更されません。
        次の例外がスローされます。
        IllegalArgumentException - フィールド名が存在しないか、無効なタイプがある場合。
        IllegalStateException - Realm が閉じている、間違ったスレッドで呼び出された、またはコレクションが管理されていないコレクションの場合。
      • sort

        RealmResults < E > sort( string fieldName1, Sort sortOrder1, string fieldName2, Sort sortOrder2)
        指定されたフィールドとソート順序に基づいてコレクションをソートします。
        パラメーター:
        fieldName1 - 最初のフィールド名。 ブール値、短縮、int、long、float、double、Date、string 型のフィールドのみがサポートされます。
        sortOrder1 - 最初のフィールドのソート順。
        fieldName2 - 2 番目のフィールド名。 ブール値、短縮、int、long、float、double、Date、string 型のフィールドのみがサポートされます。
        sortOrder2 - 2 番目のフィールドのソート順序。
        次の値を返します。
        新しいソートされたRealmResultsが作成され、返されます。 元のコレクションは変更されません。
        次の例外がスローされます。
        IllegalArgumentException - フィールド名が存在しないか、無効なタイプがある場合。
        IllegalStateException - Realm が閉じている、間違ったスレッドで呼び出された、またはコレクションが管理されていないコレクションの場合。
      • sort

        RealmResults < E > sort( string [] fieldNames、 Sort [] sortOrders)
        指定されたフィールドとソート順序に基づいてコレクションをソートします。
        パラメーター:
        fieldNames - ソートするフィールド名の配列。 ブール値、短縮、int、long、float、double、Date、string 型のフィールドのみがサポートされます。
        sortOrders - 並べ替える方向。
        次の値を返します。
        新しいソートされたRealmResultsが作成され、返されます。 元のコレクションは変更されません。
        次の例外がスローされます。
        IllegalArgumentException - フィールド名が存在しないか、無効なタイプがある場合。
        IllegalStateException - Realm が閉じている、間違ったスレッドで呼び出された、またはコレクションが管理されていないコレクションの場合。
      • deleteFromRealm

        emptydeleteFromRealm(intlocation)
        指定されたインデックスにあるオブジェクトを Realm から削除します。 これにより、 コレクションからそのファイルも削除されます。
        パラメーター:
        location - 削除するオブジェクトを識別する配列インデックス。
        次の例外がスローされます。
        IndexOutOfBoundsException - location < 0 || location >= size()の場合。
        IllegalStateException - Realm が閉じている場合、またはメソッドが間違ったスレッドから呼び出された場合。
        UnsupportedOperationException - コレクションが管理されていない場合。
      • deleteFirstFromRealm

        ブール値の deleteFirstFromRealm()
        Realm から最初のオブジェクトを削除します。 これにより、このコレクションからそのファイルも削除されます。
        次の値を返します。
        true オブジェクトが削除された場合は 、それ以外の場合はfalse
        次の例外がスローされます。
        IllegalStateException - Realm が閉じている場合、またはメソッドが間違ったスレッドで呼び出された場合。
        UnsupportedOperationException - コレクションが管理されていない場合。
      • deleteLastFromRealm

        ブール値の deleteLastFromRealm()
        Realm から最後のオブジェクトを削除します。 これにより、このコレクションからそのファイルも削除されます。
        次の値を返します。
        true オブジェクトが削除された場合は 、それ以外の場合はfalse
        次の例外がスローされます。
        IllegalStateException - Realm が閉じている場合、またはメソッドが間違ったスレッドから呼び出された場合。
        UnsupportedOperationException - コレクションが管理されていない場合。