인터페이스 OrderedRealmCollection<E>
-
- 모든 슈퍼인터페이스:
Collection<E>
,io.realm.internal.Freezable<RealmCollection<E>>
,Iterable<E>
,List<E>
,io.realm.internal.ManageableObject
,RealmCollection<E>
- 알려진 모든 구현 클래스:
OrderedRealmCollectionSnapshot
,RealmList
,RealmResults
public interface OrderedRealmCollection<E> extends List<E>, RealmCollection<E>
OrderedRealmCollection
는 요소의 순서를 유지하는 collection입니다.OrderedRealmCollection
의 모든 요소에는 인덱스가 있습니다. 따라서 각 요소는 첫 번째 인덱스가 0인 인덱스로 액세스할 수 있습니다. 일반적으로OrderedRealmCollection
는 요소가 고유해야 하는 세트와 달리 중복 요소를 허용합니다.OrderedRealmCollection
에는 세 가지 유형이 있습니다.RealmResults
및RealmList
은(는) 라이브 collection입니다. 이 필드는 항상 최신 상태이며 잘못된RealmObject
를 포함하지 않습니다.OrderedRealmCollectionSnapshot
는 다릅니다.OrderedRealmCollectionSnapshot
은 다른OrderedRealmCollection
에서 만들 수 있습니다. 크기와 요소 순서는 원본 컬렉션이 생성되었을 때와 동일하게 유지됩니다. 객체가 삭제되는 경우OrderedRealmCollectionSnapshot
에 잘못된RealmObject
이 포함될 수 있습니다.OrderedRealmCollection
를 반복하는 것은 항상 작동합니다. 반복기에 영향을 주지 않고 요소를 삭제하거나 수정할 수 있습니다. 아래 예시를 참조하세요.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
라이브 collection에서 생성된 반복자는 반복자가 생성될 때 안정적인 뷰를 생성하므로 반복기에 영향 없이 반복하는 동안 요소를 삭제하고 수정할 수 있습니다. 그러나 반복자를 지원하는
RealmResults
는 여전히 실시간 업데이트되므로 반복할 때 요소의 크기와 순서가 변경될 수 있습니다.RealmList
는 둘 다 라이브 collection이므로RealmResults
와 동작이 동일합니다.간단한 for 루프는 다릅니다. 아래 예시를 참조하세요.
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
위의 예는
RealmResults
에 있는 요소의 절반만 삭제합니다. 이는dogs.size()
로 인해 루프마다 1씩 감소하기 때문입니다. 루프에서 삭제가 발생하면RealmResults
크기에 즉시 영향을 미칩니다. 이 문제를 해결하려면OrderedRealmCollectionSnapshot
RealmResults
또는 에서 을RealmList
만들고 대신 간단한 for-loop를 수행할 수 있습니다.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
볼 수 있듯이 삭제 후에도 스냅샷의 크기와 요소 순서는 이전과 동일하게 유지됩니다. 그러나 해당 위치의 요소는 유효하지 않게 됩니다.
-
-
메서드 요약
모든 메서드 인스턴스 메서드 추상 메서드 수정자 및 유형 메서드 설명 OrderedRealmCollectionSnapshot<E>
createSnapshot()
이OrderedRealmCollection
에서 스냅샷을 생성합니다.boolean
deleteFirstFromRealm()
Realm에서 첫 번째 객체를 삭제합니다.void
deleteFromRealm(int location)
Realm에서 지정된 인덱스에 있는 객체를 삭제합니다.boolean
deleteLastFromRealm()
Realm에서 마지막 객체를 삭제합니다.E
first()
컬렉션에서 첫 번째 객체를 가져옵니다.E
first(E defaultValue)
컬렉션에서 첫 번째 객체를 가져옵니다.E
last()
collection에서 마지막 객체를 가져옵니다.E
last(E defaultValue)
collection에서 마지막 객체를 가져옵니다.RealmResults<E>
sort(String fieldName)
제공된 필드를 기준으로 collection을 오름차순으로 정렬합니다.RealmResults<E>
sort(String[] fieldNames, Sort[] sortOrders)
제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.RealmResults<E>
sort(String fieldName, Sort sortOrder)
제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.RealmResults<E>
sort(String fieldName1, Sort sortOrder1, String fieldName2, Sort sortOrder2)
제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.-
인터페이스 java.util에서 상속된 메소드입니다.collection
parallelStream, removeIf, stream, toArray
-
인터페이스 java.util에서 상속된 메소드입니다.목록
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
-
-
-
-
메서드 세부 정보
-
first
@Nullable E first()
컬렉션에서 첫 번째 객체를 가져옵니다.- 반환합니다:
- 첫 번째 객체입니다.
- 예외 처리:
IndexOutOfBoundsException
- collection이 비어 있는 경우.
-
first
@Nullable E first(@Nullable E defaultValue)
collection에서 첫 번째 객체를 가져옵니다. collection이 비어 있으면 제공된 기본값이 대신 사용됩니다.- 반환합니다:
- 첫 번째 객체 또는 제공된 기본값입니다.
-
last
@Nullable E last()
collection에서 마지막 객체를 가져옵니다.- 반환합니다:
- 마지막 객체입니다.
- 예외 처리:
IndexOutOfBoundsException
- collection이 비어 있는 경우.
-
last
@Nullable E last(@Nullable E defaultValue)
collection에서 마지막 객체를 가져옵니다. collection이 비어 있으면 제공된 기본값이 대신 사용됩니다.- 반환합니다:
- 마지막 객체 또는 제공된 기본값입니다.
-
sort
RealmResults<E> sort(String fieldName)
제공된 필드를 기준으로 collection을 오름차순으로 정렬합니다.- 매개변수:
fieldName
- 정렬할 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.- 반환합니다:
- 새로 정렬된
RealmResults
이(가) 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다. - 예외 처리:
IllegalArgumentException
- 필드 이름이 존재하지 않거나 잘못된 유형인 경우IllegalStateException
- if the Realm이 닫혔거나 잘못된 스레드에서 호출되었거나 컬렉션이 관리되지 않는 collection 경우
-
sort
RealmResults<E> sort(String fieldName, Sort sortOrder)
제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.- 매개변수:
fieldName
- 정렬할 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.sortOrder
- 정렬 기준 방향입니다.- 반환합니다:
- 새로 정렬된
RealmResults
이(가) 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다. - 예외 처리:
IllegalArgumentException
- 필드 이름이 존재하지 않거나 잘못된 유형인 경우IllegalStateException
- if the Realm이 닫혔거나 잘못된 스레드에서 호출되었거나 컬렉션이 관리되지 않는 collection 경우
-
sort
RealmResults<E> sort(문자열 fieldName1, 정렬 sortOrder1, 문자열 fieldName2, 정렬 sortOrder2)
제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.- 매개변수:
fieldName1
- 첫 번째 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.sortOrder1
- 첫 번째 필드의 정렬 순서입니다.fieldName2
- 두 번째 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.sortOrder2
- 두 번째 필드의 정렬 순서입니다.- 반환합니다:
- 새로 정렬된
RealmResults
이(가) 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다. - 예외 처리:
IllegalArgumentException
- 필드 이름이 존재하지 않거나 잘못된 유형인 경우IllegalStateException
- if the Realm이 닫혔거나 잘못된 스레드에서 호출되었거나 컬렉션이 관리되지 않는 collection 경우
-
sort
RealmResults<E> sort(String[] fieldNames, Sort[] sortOrders)
제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.- 매개변수:
fieldNames
- 정렬 기준이 되는 필드 이름의 배열입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.sortOrders
- 정렬 기준 방향.- 반환합니다:
- 새로 정렬된
RealmResults
이(가) 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다. - 예외 처리:
IllegalArgumentException
- 필드 이름이 존재하지 않거나 잘못된 유형인 경우IllegalStateException
- if the Realm이 닫혔거나 잘못된 스레드에서 호출되었거나 컬렉션이 관리되지 않는 collection 경우
-
deleteFromRealm
void deleteFromRealm(int 위치)
Realm에서 지정된 인덱스에 있는 객체를 삭제합니다. 이렇게 하면 collection에서도 제거됩니다.- 매개변수:
location
- 제거할 객체를 식별하는 배열 인덱스입니다.- 예외 처리:
IndexOutOfBoundsException
-location < 0 || location >= size()
인 경우.IllegalStateException
- Realm이 닫혔거나 잘못된 스레드에서 메서드가 호출된 경우UnsupportedOperationException
- collection이 관리되지 않는 경우.
-
deleteFirstFromRealm
부울 deleteFirstFromRealm()
Realm에서 첫 번째 객체를 삭제합니다. 이렇게 하면 이 collection에서도 제거됩니다.- 반환합니다:
true
객체가 삭제되면false
, 그렇지 않으면 을 반환합니다.- 예외 처리:
IllegalStateException
- Realm이 닫혔거나 잘못된 스레드에서 메서드가 호출된 경우UnsupportedOperationException
- collection이 관리되지 않는 경우.
-
deleteLastFromRealm
부울 deleteLastFromRealm()
Realm에서 마지막 객체를 삭제합니다. 이렇게 하면 이 collection에서도 제거됩니다.- 반환합니다:
true
객체가 삭제되면false
, 그렇지 않으면 을 반환합니다.- 예외 처리:
IllegalStateException
- Realm이 닫혔거나 잘못된 스레드에서 메서드가 호출된 경우UnsupportedOperationException
- collection이 관리되지 않는 경우.
-
createSnapshot
OrderedRealmCollectionSnapshot<E> createSnapshot()
이OrderedRealmCollection
에서 스냅샷을 생성합니다.- 반환합니다:
- 이 collection의 스냅샷입니다.
- 예외 처리:
IllegalStateException
- Realm이 닫혔거나 잘못된 스레드에서 메서드가 호출된 경우UnsupportedOperationException
- collection이 관리되지 않는 경우.- 다음도 참조하세요.
OrderedRealmCollectionSnapshot
-
-