Menu Docs

Página inicial do DocsDesenvolver aplicaçõesAtlas Device SDKs

Interface OrderedRealmCollection

Nesta página

  • io.realm
  • Resumo do método
  • Métodos herdados
  • Detalhes do método
  • createSnapshot
  • deleteFirstFromRealm
  • deleteFromRealm
  • deleteLastFromRealm
  • primeiro
  • último
  • sort

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.

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.

público vazio
localização int
)

Exclui o objeto no índice fornecido do Realm.

booleanopúblico

Exclui o último objeto do Realm.

público E
E defaultValue
)

Obtém o primeiro objeto da collection.

público E

Obtém o primeiro objeto da collection.

público E
E defaultValue
)

Obtém o último objeto da collection.

público E

Obtém o último objeto da collection.

java.lang.String[] fieldNames,
io.realm.Sort[] sortOrders
)

Classifica uma collection com base nos campos fornecidos e nas ordens de classificação.

Corda fieldName1,
Ordenar sortOrder1,
Corda fieldName2,
Classificar classOrder2
)

Classifica uma collection com base nos campos fornecidos e nas ordens de classificação.

Corda fieldName,
Classificar pedido de classificação
)

Classifica uma collection com base no campo fornecido e na ordem de classificação.

Corda fieldName
)

Classifica uma collection com base no campo fornecido em ordem crescente.

Cria um snapshot a partir deste OrderedRealmCollection .

Devoluções

o snapshot da collection.

Lança

Dica

Veja também:

público booleano deleteFirstFromRealm ()

Exclui o primeiro objeto do Realm. Isso também o remove desta collection.

Devoluções

true se um objeto foi excluído, false caso contrário.

Lança

público 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ça

público booleano deleteLastFromRealm ()

Exclui o último objeto do Realm. Isso também o remove desta collection.

Devoluções

true se um objeto foi excluído, false caso contrário.

Lança

público E primeiro (
E defaultValue
)

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.

público E primeiro ()

Obtém o primeiro objeto da collection.

Devoluções

o primeiro objeto.

Lança

último (
E defaultValue
)

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

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.

Devoluções

um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada.

Lança

Corda fieldName1,
Ordenar sortOrder1,
Corda fieldName2,
Classificar classOrder2
)

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.

Devoluções

um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada.

Lança

Corda fieldName,
Classificar pedido de classificação
)

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.

Devoluções

um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada.

Lança

Corda 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.

Devoluções

um novo RealmResults classificado será criado e retornado. A collection original permanece inalterada.

Lança

← enumeração OrderedCollectionChangeSet.State