Pacote io.realm

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>
    Um OrderedRealmCollection é uma coleção 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. Normally, OrderedRealmCollections allow duplicate elements, as compared to Sets, where elements have to be unique.

    Existem três tipos de OrderedRealmCollection. RealmResults e RealmList são collection 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 ordem dos elementos permanecem os mesmos da coleção original quando ela foi criada. OrderedRealmCollectionSnapshot pode conter RealmObjects 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 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 as RealmResults 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 de dogs.size() diminuído em 1 para cada loop. A exclusão que acontece no loop afetará imediatamente o tamanho de RealmResults. Para resolver esse problema, você pode criar um OrderedRealmCollectionSnapshot a partir de RealmResults ou RealmList 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.

    • Detalhes do método

      • 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(@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 - se location < 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.