Docs Menu

OrderedRealmCollection 인터페이스

구현된 인터페이스:

OrderedRealmCollection 는 요소의 순서를 유지하는 collection입니다. OrderedRealmCollection 의 모든 요소에는 인덱스가 있습니다. 따라서 각 요소는 첫 번째 인덱스가 0인 인덱스로 액세스할 수 있습니다. 일반적으로 OrderedRealmCollection 는 요소가 고유해야 하는 세트와 달리 중복 요소를 허용합니다.

OrderedRealmCollection 에는 세 가지 유형이 있습니다. RealmResultsRealmList 는 라이브 컬렉션입니다. 파일은 항상 최신 상태이며 잘못된 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

라이브 컬렉션에서 생성된 반복자는 반복자가 생성될 때 안정적인 뷰를 생성하므로 반복기에 영향을 주지 않고 반복하는 동안 요소를 삭제하고 수정할 수 있습니다. However, the RealmResults backing the iterator will still be live updated meaning that size and order of elements can change when iterating. RealmList 는 둘 다 라이브 컬렉션이므로 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 크기에 즉시 영향을 미칩니다. 이 문제를 해결하려면 RealmResults 또는 RealmList 에서 OrderedRealmCollectionSnapshot 을 생성하고 대신 간단한 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

볼 수 있듯이 삭제 후에도 스냅샷의 크기와 요소 순서는 이전과 동일하게 유지됩니다. 그러나 해당 위치의 요소는 유효하지 않게 됩니다.

수정자 및 유형
메서드 및 설명

OrderedRealmCollection 에서 스냅샷을 만듭니다.

공개 부울

Realm에서 첫 번째 객체를 삭제합니다.

public void

int location
)

Realm에서 지정된 인덱스에 있는 객체를 삭제합니다.

공개 부울

Realm에서 마지막 객체를 삭제합니다.

public E

E defaultValue
)

컬렉션에서 첫 번째 객체를 가져옵니다.

public E

컬렉션에서 첫 번째 객체를 가져옵니다.

public E

E defaultValue
)

collection에서 마지막 객체를 가져옵니다.

public E

last ()

collection에서 마지막 객체를 가져옵니다.

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

제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.

String fieldName1,
Sort sortOrder1,
String fieldName2,
Sort sortOrder2
)

제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.

String fieldName,
Sort sortOrder
)

제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.

String fieldName
)

제공된 필드를 기준으로 collection을 오름차순으로 정렬합니다.

OrderedRealmCollection 에서 스냅샷을 만듭니다.

반환

이 collection의 스냅샷입니다.

스로우

다음도 참조하세요.

public boolean deleteFirstFromRealm ()

Realm에서 첫 번째 객체를 삭제합니다. 이렇게 하면 이 collection에서도 제거됩니다.

반환

객체가 삭제된 경우 true , 그렇지 않으면 false 입니다.

스로우

public void deleteFromRealm (
int location
)

Realm에서 지정된 인덱스에 있는 객체를 삭제합니다. 이렇게 하면 collection에서도 제거됩니다.

매개변수

  • location - 제거할 객체 를 식별하는 배열 인덱스 입니다.

스로우

public boolean deleteLastFromRealm ()

Realm에서 마지막 객체를 삭제합니다. 이렇게 하면 이 collection에서도 제거됩니다.

반환

객체가 삭제된 경우 true , 그렇지 않으면 false 입니다.

스로우

public E first (
E defaultValue
)

collection에서 첫 번째 객체를 가져옵니다. collection이 비어 있으면 제공된 기본값이 대신 사용됩니다.

반환

첫 번째 객체 또는 제공된 기본값입니다.

public E first ()

컬렉션에서 첫 번째 객체를 가져옵니다.

반환

첫 번째 객체입니다.

스로우

public E last (
E defaultValue
)

collection에서 마지막 객체를 가져옵니다. collection이 비어 있으면 제공된 기본값이 대신 사용됩니다.

반환

마지막 객체 또는 제공된 기본값입니다.

public E last ()

collection에서 마지막 객체를 가져옵니다.

반환

마지막 객체입니다.

스로우

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

제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.

매개변수

  • fieldNames - 정렬 기준이 되는 필드 이름의 배열 입니다. 부울, 짧은, int, long, float, double, 날짜 및 string 유형의 필드만 지원됩니다.

  • sortOrders - 정렬 기준으로 사용할 방향입니다.

반환

새로 정렬된 RealmResults 가 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다.

스로우

String fieldName1,
Sort sortOrder1,
String fieldName2,
Sort sortOrder2
)

제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.

매개변수

  • fieldName1 - 첫 번째 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 string 유형의 필드만 지원됩니다.

  • sortOrder1 - 첫 번째 필드 의 정렬 순서입니다.

  • fieldName2 - 두 번째 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 string 유형의 필드만 지원됩니다.

  • sortOrder2 - 두 번째 필드 의 정렬 순서입니다.

반환

새로 정렬된 RealmResults 가 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다.

스로우

String fieldName,
Sort sortOrder
)

제공된 필드와 정렬 순서에 따라 collection을 정렬합니다.

매개변수

  • fieldName - 정렬 기준이 되는 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 string 유형의 필드만 지원됩니다.

  • sortOrder - 정렬 기준으로 사용할 방향입니다.

반환

새로 정렬된 RealmResults 가 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다.

스로우

String fieldName
)

제공된 필드를 기준으로 collection을 오름차순으로 정렬합니다.

매개변수

  • fieldName - 정렬 기준이 되는 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 string 유형의 필드만 지원됩니다.

반환

새로 정렬된 RealmResults 가 생성되어 반환됩니다. 원본 collection은 변경되지 않은 상태로 유지됩니다.

스로우