Docs Menu
Docs Home
/ /
Atlas Device SDK
/ / /

OrderedRealmCollection 인터페이스

이 페이지의 내용

  • io.realm
  • 메서드 요약
  • 상속된 메서드
  • 메서드 세부 정보
  • createSnapshot
  • deleteFirstFromRealm
  • deleteFromRealm
  • deleteLastFromRealm
  • first
  • last
  • sort

구현된 인터페이스:

  • java.util.List

  • io.realm.RealmCollection

  • java.util.Collection

  • java.lang.Iterable

  • java.util.Collection

  • java.lang.Iterable

OrderedRealmCollection 은(는) 해당 요소의 순서를 유지하는 컬렉션입니다. 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, 날짜 및 문자열 유형의 필드만 지원됩니다.

  • sortOrders - 정렬 기준 방향.

반환

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

스로우

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

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

매개변수

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

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

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

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

반환

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

스로우

String fieldName,
Sort sortOrder
)

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

매개변수

  • fieldName - 정렬할 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.

  • sortOrder - 정렬 기준 방향입니다.

반환

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

스로우

String fieldName
)

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

매개변수

  • fieldName - 정렬할 필드 이름입니다. 부울, 짧은, int, long, float, double, 날짜 및 문자열 유형의 필드만 지원됩니다.

반환

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

스로우

돌아가기

OrderedCollectionChangeSet.State