OrderedRealmCollection
項目一覧
io.realm
実装されたインターフェース:
OrderedRealmCollection
は、要素の順序付けを維持するコレクションです。 OrderedRealmCollection
内のすべての要素にはインデックスがあります。 したがって、各要素にはそのインデックスがアクセスできます。最初のインデックスは 0 です。 通常、 OrderedRealmCollection
は、要素が一意である必要がある Set と比較して、重複要素を許可します。
OrderedRealmCollectionには 3 つのタイプがあります。 RealmResultsとRealmListはライブ コレクションです。 常に最新の状態で、無効な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
は引き続きライブ更新され、反復処理中に要素のサイズと順序が変更される可能性があります。 RealmListはRealmResultsと同じ動作をします。これらは両方ともライブ コレクションであるためです。
単純な 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
のサイズにすぐに影響します。 この問題を解決するには、 RealmResults または RealmList から OrderedRealmCollectionSnapshot を作成し、その上で単純な 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
ご覧のとおり、削除後も、スナップショットのサイズと要素の順序は以前と同じままです。 ただし、位置の要素は無効になります。
メソッドの概要
修飾子と型 | メソッドと説明 |
---|---|
public OrderRealmCollectionSnapshot | このOrderedRealmCollectionからスナップショットを作成します。 |
パブリックブール値 | Realm から最初のオブジェクトを削除します。 |
public void | 指定されたインデックスにあるオブジェクトを Realm から削除します。 |
パブリックブール値 | Realm から最後のオブジェクトを削除します。 |
public E | コレクションから最初のオブジェクトを取得します。 |
public E | first () コレクションから最初のオブジェクトを取得します。 |
public E | コレクションから最後のオブジェクトを取得します。 |
public E | last () コレクションから最後のオブジェクトを取得します。 |
public RealmResults | 指定されたフィールドとソート順序に基づいてコレクションをソートします。 |
public RealmResults | |
public RealmResults | |
public RealmResults |
継承されたメソッド
メソッドの詳細
createSnapshot
public OrderedRealmCollectionSnapshot createSnapshot () |
---|
このOrderedRealmCollectionからスナップショットを作成します。 戻り値 このコレクションのスナップショット。 スロー
|
deleteFirstFromRealm
public boolean deleteFirstFromRealm () |
---|
Realm から最初のオブジェクトを削除します。 これにより、このコレクションからそのファイルも削除されます。 戻り値
スロー
|
deleteFromRealm
指定されたインデックスにあるオブジェクトを Realm から削除します。 これにより、 コレクションからそのファイルも削除されます。 パラメーター
スロー
|
deleteLastFromRealm
public boolean deleteLastFromRealm () |
---|
Realm から最後のオブジェクトを削除します。 これにより、このコレクションからそのファイルも削除されます。 戻り値
スロー
|
最初に
コレクションから最初のオブジェクトを取得します。 コレクションが空の場合は、指定されたデフォルトが代わりに使用されます。 戻り値 最初のオブジェクトまたは指定されたデフォルトの 。 |
public E first () |
---|
last
コレクションから最後のオブジェクトを取得します。 コレクションが空の場合は、指定されたデフォルトが代わりに使用されます。 戻り値 最後の オブジェクトまたは指定されたデフォルトの 。 |
public E last () |
---|
sort
指定されたフィールドとソート順序に基づいてコレクションをソートします。 パラメーター
戻り値 新しいソートされたRealmResultが作成され、返されます。 元のコレクションは変更されません。 スロー
|
指定されたフィールドとソート順序に基づいてコレクションをソートします。 パラメーター
戻り値 新しいソートされたRealmResultが作成され、返されます。 元のコレクションは変更されません。 スロー
|
指定されたフィールドとソート順序に基づいてコレクションをソートします。 パラメーター
戻り値 新しいソートされたRealmResultが作成され、返されます。 元のコレクションは変更されません。 スロー
|
指定された フィールドに基づいてコレクションを昇順でソートします。 パラメーター
戻り値 新しいソートされたRealmResultが作成され、返されます。 元のコレクションは変更されません。 スロー
|