io.realm
Interfaces implementadas:
An OrderedRealmCollection Es una colección que mantiene un orden para sus elementos. Cada elemento en OrderedRealmCollection tiene un índice. Por lo tanto, se puede acceder a cada elemento por su índice, siendo el primero cero. Normalmente, los OrderedRealmCollection permiten elementos duplicados, a diferencia de los conjuntos, donde los elementos deben ser únicos.
Hay tres tipos de OrderedRealmCollection. RealmResults y RealmList son colecciones activas. Se actualizan constantemente y nunca contendrán un RealmObject no válido. OrderedRealmCollectionSnapshot es diferente. Una OrderedRealmCollectionSnapshot se puede crear a partir de otra OrderedRealmCollection. Su tamaño y el orden de los elementos se mantienen iguales a los de la colección original al crearse. OrderedRealmCollectionSnapshot puede contener RealmObject no válidos si los objetos se eliminan.
Usar iteradores para iterar en OrderedRealmCollection siempre funcionará. Puedes eliminar o modificar los elementos sin afectar al iterador. Consulta el siguiente ejemplo:
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
Un iterador creado a partir de una colección activa generará una vista estable al crearse, lo que permite eliminar y modificar elementos durante la iteración sin afectar al iterador. Sin embargo, el que respalda al RealmResults iterador se actualizará en tiempo real, lo que significa que el tamaño y el orden de los elementos pueden cambiar durante laiteración. RealmList se comporta igual que RealmResults, ya que ambas son colecciones activas.
Un bucle for simple es diferente. Vea el siguiente ejemplo:
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
El ejemplo anterior solo elimina la mitad de los elementos de RealmResults. Esto se debe a que se dogs.size() reduce en 1 en cada bucle. La eliminación en el bucle afectará inmediatamente el tamaño RealmResults de. Para solucionar este problema, puede crear una OrderedRealmCollectionSnapshot a partir de RealmResults o RealmList y ejecutar un bucle for simple en ella:
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
Como puede ver, tras la eliminación, el tamaño y el orden de los elementos de la instantánea se mantienen igual. Sin embargo, el elemento en esa posición deja de ser válido.
Resumen del método
Modificador y Tipo | Método y descripción |
|---|---|
Instantánea de colecciónpública de reinos ordenados | Crea una instantánea de esta OrderedRealmCollection. |
booleanopúblico | Elimina el primer objeto del Reino. |
vacío público | Elimina el objeto en el índice dado del Reino. |
booleanopúblico | Elimina el último objeto del Reino. |
público E | Obtiene el primer objeto de la colección. |
público E | first () Obtiene el primer objeto de la colección. |
público E | Obtiene el último objeto de la colección. |
público E | last () Obtiene el último objeto de la colección. |
Resultados del dominiopúblico | Ordena una colección en función de los campos y órdenes de clasificación enviados. |
Resultados del dominiopúblico | |
Resultados del dominiopúblico | |
Resultados del dominiopúblico |
Métodos heredados
Detalle del método
crearInstantánea
public OrderedRealmCollectionSnapshot createSnapshot () |
|---|
Crea una instantánea de esta OrderedRealmCollection. Devuelve La instantánea de esta colección. Lanzamientos
|
eliminarPrimeroDelReino
public boolean deleteFirstFromRealm () |
|---|
Elimina el primer objeto del dominio. Esto también lo elimina de esta colección. Devuelve
Lanzamientos
|
eliminarDelReino
Elimina el objeto en el índice dado del dominio. Esto también lo elimina de la colección. Parámetros
Lanzamientos
|
eliminarÚltimoDelReino
public boolean deleteLastFromRealm () |
|---|
Elimina el último objeto del dominio. Esto también lo elimina de esta colección. Devuelve
Lanzamientos
|
primera
Obtiene el primer objeto de la colección. Si la colección está vacía, se usará el valor predeterminado proporcionado. Devuelve el primer objeto o el predeterminado proporcionado. |
public E first () |
|---|
Obtiene el primer objeto de la colección. Devuelve El primer objeto. Lanzamientos
|
última
Obtiene el último objeto de la colección. Si la colección está vacía, se usará el valor predeterminado proporcionado. Devuelve el último objeto o el predeterminado proporcionado. |
public E last () |
|---|
Obtiene el último objeto de la colección. Devuelve El último objeto. Lanzamientos
|
sort
Ordena una colección en función de los campos y órdenes de clasificación enviados. Parámetros
Devuelve Se creará y devolverá un nuevo RealmResults ordenado. La colección original permanece intacta. Lanzamientos
|
Ordena una colección en función de los campos y órdenes de clasificación enviados. Parámetros
Devuelve Se creará y devolverá un nuevo RealmResults ordenado. La colección original permanece intacta. Lanzamientos
|
Ordena una colección según el campo proporcionado y el orden de clasificación. Parámetros
Devuelve Se creará y devolverá un nuevo RealmResults ordenado. La colección original permanece intacta. Lanzamientos
|
Ordena una colección según el campo proporcionado en orden ascendente. Parámetros
Devuelve Se creará y devolverá un nuevo RealmResults ordenado. La colección original permanece intacta. Lanzamientos
|