Interface OrderedRealmCollection
Nesta página
io.realm
Interfaces implementadas:
Um OrderedRealmCollection
é uma collection que mantém uma ordenação para seus elementos. Cada elemento no OrderedRealmCollection
tem um índice. Cada elemento pode assim ser acessado pelo seu índice, com o primeiro índice sendo zero. Normalmente, OrderedRealmCollection
s permitem elementos duplicados, em comparação com Conjuntos, onde os elementos devem ser únicos.
Existem três tipos de OrderedRealmCollection . RealmResults e RealmList são coleções ativas. Eles estão atualizados o tempo todo e nunca conterão um RealmObject inválido. OrderedRealmCollectionSnapshot é diferente. Um OrderedRealmCollectionSnapshot pode ser criado a partir de outro OrderedRealmCollection . Seu tamanho e a ordem dos elementos permanecem os mesmos da coleção original quando ela foi criada. OrderedRealmCollectionSnapshot pode conter RealmObject s inválidos se os objetos forem excluídos.
Usar iteradores para iterar em OrderedRealmCollection sempre funcionará. Você pode excluir ou modificar os elementos sem afetar o iterador. Veja o exemplo abaixo:
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
Um iterador criado a partir de uma collection ativa criará uma visualização estável quando o iterador for criado, permitindo que você exclua e modifique elementos enquanto itera sem impacto o iterador. No entanto, o RealmResults
que apoia o iterador ainda será atualizado ao vivo, o que significa que o tamanho e a ordem dos elementos podem mudar durante a iteração. RealmList tem o mesmo comportamento que RealmResults , pois ambos são collection ativas.
Um simples loop for é diferente. Veja exemplo abaixo:
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
O exemplo acima exclui apenas metade dos elementos no RealmResults . Isso ocorre por causa de dogs.size()
diminuído em 1 para cada loop. A exclusão que acontece no loop terá impacto imediato no tamanho de RealmResults
. Para resolver esse problema, você pode criar um OrderedRealmCollectionSnapshot a partir de RealmResults ou RealmList e fazer um for-loop simples sobre isso:
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 você pode ver, após a exclusão, o tamanho e a ordem dos elementos do snapshot permanecem os mesmos de antes. Mas o elemento na posição torna-se inválido.
Resumo do método
Modificador e tipo | Método e descrição |
---|---|
público OrderedRealmCollectionSnapshot | Cria um snapshot a partir deste OrderedRealmCollection . |
booleanopúblico | Exclui o primeiro objeto do Realm. |
public void | Exclui o objeto no índice fornecido do Realm. |
booleanopúblico | Exclui o último objeto do Realm. |
público E | Obtém o primeiro objeto da collection. |
público E | first () Obtém o primeiro objeto da collection. |
público E | Obtém o último objeto da collection. |
público E | last () Obtém o último objeto da collection. |
Public RealmResults | Classifica uma collection com base nos campos fornecidos e nas ordens de classificação. |
Public RealmResults | |
Public RealmResults | |
Public RealmResults |
Métodos herdados
Detalhes do método
createSnapshot
public OrderedRealmCollectionSnapshot createSnapshot () |
---|
Cria um snapshot a partir deste OrderedRealmCollection . Devoluções o snapshot da collection. Lança
|
deleteFirstFromRealm
public boolean deleteFirstFromRealm () |
---|
Exclui o primeiro objeto do Realm. Isso também o remove desta collection. Devoluções
Lança
|
deleteFromRealm
Exclui o objeto no índice fornecido do Realm. Isso também o remove da coleção. Parâmetros
Lança
|
deleteLastFromRealm
public boolean deleteLastFromRealm () |
---|
Exclui o último objeto do Realm. Isso também o remove desta collection. Devoluções
Lança
|
primeiro
Obtém o primeiro objeto da collection. Se a collection estiver vazia, o padrão fornecido será usado. Devoluções o primeiro objeto ou o padrão fornecido. |
public E first () |
---|
Obtém o primeiro objeto da collection. Devoluções o primeiro objeto. Lança
|
último
Obtém o último objeto da collection. Se a collection estiver vazia, o padrão fornecido será usado. Devoluções o último objeto ou o padrão fornecido. |
public E last () |
---|
Obtém o último objeto da collection. Devoluções o último objeto. Lança
|
sort
Classifica uma collection com base nos campos fornecidos e nas ordens de classificação. Parâmetros
Devoluções um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada. Lança
|
Classifica uma collection com base nos campos fornecidos e nas ordens de classificação. Parâmetros
Devoluções um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada. Lança
|
Classifica uma collection com base no campo fornecido e na ordem de classificação. Parâmetros
Devoluções um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada. Lança
|
Classifica uma collection com base no campo fornecido em ordem crescente. Parâmetros
Devoluções um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada. Lança
|