Interface OrderedRealmCollection<E>
-
- Todas as interfaces:
Collection<E>
,io.realm.internal.Freezable<RealmCollection<E>>
,Iterable<E>
,List<E>
,io.realm.internal.ManageableObject
,RealmCollection<E>
- Todas as classes de implementação conhecidas:
OrderedRealmCollectionSnapshot
,RealmList
,RealmResults
public interface OrderedRealmCollection<E> extends List<E>, RealmCollection<E>
UmOrderedRealmCollection
é uma coleção que mantém uma ordenação para seus elementos. Cada elemento noOrderedRealmCollection
tem um índice. Cada elemento pode assim ser acessado pelo seu índice, com o primeiro índice sendo zero. Normally,OrderedRealmCollection
s allow duplicate elements, as compared to Sets, where elements have to be unique.Existem três tipos de
OrderedRealmCollection
.RealmResults
eRealmList
são collection ativas. Eles estão atualizados o tempo todo e nunca conterão umRealmObject
inválido.OrderedRealmCollectionSnapshot
é diferente. UmOrderedRealmCollectionSnapshot
pode ser criado a partir de outroOrderedRealmCollection
. Seu tamanho e ordem dos elementos permanecem os mesmos da coleção original quando ela foi criada.OrderedRealmCollectionSnapshot
pode conterRealmObject
s inválidos se os objetos forem excluídos.OrderedRealmCollection
sempre funcionará. Você pode excluir ou modificar os elementos sem afetar o iterador. Veja 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 no 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
has the same behaviour asRealmResults
since they are both live collections.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 dedogs.size()
diminuído em 1 para cada loop. A exclusão que acontece no loop afetará imediatamente o tamanho deRealmResults
. Para resolver esse problema, você pode criar umOrderedRealmCollectionSnapshot
a partir deRealmResults
ouRealmList
e fazer um loop for simples sobre ele: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
Todos os métodos Métodos de instância Métodos abstratos Modificador e tipo Método Descrição OrderedRealmCollectionSnapshot<E>
createSnapshot()
Cria um snapshot a partir desteOrderedRealmCollection
.boolean
deleteFirstFromRealm()
Exclui o primeiro objeto do Realm.void
deleteFromRealm(int location)
Exclui o objeto no índice fornecido do Realm.boolean
deleteLastFromRealm()
Exclui o último objeto do Realm.E
first()
Obtém o primeiro objeto da collection.E
first(E defaultValue)
Obtém o primeiro objeto da collection.E
last()
Obtém o último objeto da collection.E
last(E defaultValue)
Obtém o último objeto da collection.RealmResults<E>
sort(String fieldName)
Classifica uma collection com base no campo fornecido em ordem crescente.RealmResults<E>
sort(String[] fieldNames, Sort[] sortOrders)
Classifica uma collection com base nos campos fornecidos e nas ordens de classificação.RealmResults<E>
sort(String fieldName, Sort sortOrder)
Classifica uma collection com base no campo fornecido e na ordem de classificação.RealmResults<E>
sort(String fieldName1, Sort sortOrder1, String fieldName2, Sort sortOrder2)
Classifica uma collection com base nos campos fornecidos e nas ordens de classificação.-
Métodos herdados da interface java.util.collection
parallelStream, removeIf, stream, toArray
-
Métodos herdados da interface java.util.Lista
add, add, addAll, addAll, clear, contains, containsAll, equals, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray
-
-
-
-
Detalhes do método
-
primeiro
@Nullable E first()
Obtém o primeiro objeto da collection.- Retorna:
- o primeiro objeto.
- Lançamentos:
IndexOutOfBoundsException
- se a collection estiver vazia.
-
primeiro
@Nullable E first(@Nullable E defaultValue)
Obtém o primeiro objeto da collection. Se a collection estiver vazia, o padrão fornecido será usado.- Retorna:
- o primeiro objeto ou o padrão fornecido.
-
último
@Nullable E last()
Obtém o último objeto da collection.- Retorna:
- o último objeto.
- Lançamentos:
IndexOutOfBoundsException
- se a collection estiver vazia.
-
último
@Nullable E last(@Nullable E defaultValue)
Obtém o último objeto da collection. Se a collection estiver vazia, o padrão fornecido será usado.- Retorna:
- o último objeto ou o padrão fornecido.
-
sort
RealmResults<E> sort(String fieldName)
Classifica uma collection com base no campo fornecido em ordem crescente.- Parâmetros:
fieldName
- o nome do campo pelo qual classificar. Somente campos do tipo booleano, curto, int, longo, flutuante, duplo, Data e String são permitidos.- Retorna:
- um novo
RealmResults
ordenado será criado e devolvido. A collection original permanece inalterada. - Lançamentos:
IllegalArgumentException
- se o nome do campo não existir ou tiver um tipo inválido.IllegalStateException
- se o Realm estiver fechado, chamado na thread errada ou a collection for uma collection não gerenciada.
-
sort
RealmResults<E> sort(String fieldName, Sort sortOrder)
Classifica uma collection com base no campo fornecido e na ordem de classificação.- Parâmetros:
fieldName
- o nome do campo pelo qual classificar. Somente campos do tipo booleano, curto, int, longo, flutuante, duplo, Data e String são permitidos.sortOrder
- a direção pela qual classificar.- Retorna:
- um novo
RealmResults
ordenado será criado e devolvido. A collection original permanece inalterada. - Lançamentos:
IllegalArgumentException
- se o nome do campo não existir ou tiver um tipo inválido.IllegalStateException
- se o Realm estiver fechado, chamado na thread errada ou a collection for uma collection não gerenciada.
-
sort
RealmResults<E> ordenação(String fieldName1, ordenação ordenação1 , string fieldName2, ordenação ordenação2 )
Classifica uma collection com base nos campos fornecidos e nas ordens de classificação.- Parâmetros:
fieldName1
- nome do primeiro campo. Somente campos do tipo booleano, curto, int, longo, flutuante, duplo, Data e String são permitidos.sortOrder1
- ordem de classificação para o primeiro campo.fieldName2
- nome do segundo campo. Somente campos do tipo booleano, curto, int, longo, flutuante, duplo, Data e String são permitidos.sortOrder2
- ordem de classificação para o segundo campo.- Retorna:
- um novo
RealmResults
ordenado será criado e devolvido. A collection original permanece inalterada. - Lançamentos:
IllegalArgumentException
- se um nome de campo não existir ou tiver um tipo inválido.IllegalStateException
- se o Realm estiver fechado, chamado na thread errada ou a collection for uma collection não gerenciada.
-
sort
RealmResults<E> sort(String[] fieldNames, Sort[] sortOrders)
Classifica uma collection com base nos campos fornecidos e nas ordens de classificação.- Parâmetros:
fieldNames
- uma array de nomes de campos para classificar. Somente campos do tipo booleano, curto, int, longo, flutuante, duplo, Data e String são permitidos.sortOrders
- as instruções para classificar por.- Retorna:
- um novo
RealmResults
ordenado será criado e devolvido. A collection original permanece inalterada. - Lançamentos:
IllegalArgumentException
- se um nome de campo não existir ou tiver um tipo inválido.IllegalStateException
- se o Realm estiver fechado, chamado na thread errada ou a collection for uma collection não gerenciada.
-
deleteFromRealm
vazio deleteFromRealm(localização int)
Exclui o objeto no índice fornecido do Realm. Isso também o remove da coleção.- Parâmetros:
location
- o índice da array identificando o objeto a ser removido.- Lançamentos:
IndexOutOfBoundsException
- selocation < 0 || location >= size()
.IllegalStateException
- se o Realm estiver fechado ou o método for chamado da thread errada.UnsupportedOperationException
- se a collection não estiver gerenciada.
-
deleteFirstFromRealm
boolean deleteFirstFromRealm()
Exclui o primeiro objeto do Realm. Isso também o remove desta collection.- Retorna:
true
se um objeto foi excluído,false
caso contrário.- Lançamentos:
IllegalStateException
- se o Realm estiver fechado ou o método for chamado na thread errada.UnsupportedOperationException
- se a collection não estiver gerenciada.
-
deleteLastFromRealm
boolean deleteLastFromRealm()
Exclui o último objeto do Realm. Isso também o remove desta collection.- Retorna:
true
se um objeto foi excluído,false
caso contrário.- Lançamentos:
IllegalStateException
- se o Realm estiver fechado ou o método for chamado da thread errada.UnsupportedOperationException
- se a collection não estiver gerenciada.
-
createSnapshot
OrderedRealmCollectionSnapshot<E> createSnapshot()
Cria um snapshot a partir desteOrderedRealmCollection
.- Retorna:
- o snapshot da collection.
- Lançamentos:
IllegalStateException
- se o Realm estiver fechado ou o método for chamado da thread errada.UnsupportedOperationException
- se a collection não estiver gerenciada.- Veja também:
OrderedRealmCollectionSnapshot
-
-