安装包 io.realm
RealmSet<E> 类
- java.lang.Object
-
- io.realm.RealmSet<E>
-
- 类型参数:
E
- 此集合中存储的值的类型
- 所有已实现的接口:
io.realm.internal.Freezable<RealmCollection<E>>
,io.realm.internal.ManageableObject
,RealmCollection<E>
,Iterable<E>
,Collection<E>
,Set<E>
public class RealmSet<E> extends Object implements Set<E>, io.realm.internal.ManageableObject, RealmCollection<E>
RealmSet 是一个不包含重复元素的collection。与
RealmList
类似,RealmSet 可以在托管和非托管模式下运行。 在托管模式下,RealmSet 会将其所有内容持久保存在 Realm 中,而在非托管模式下,其功能类似于HashSet
。托管 RealmSet 只能由 Realm 创建,并且每当底层 Realm 更新时都会自动更新其内容。 托管 RealmSet 只能使用指向
RealmObject
的 RealmSet 字段的 getter 来访问。可以使用
Realm.copyToRealm(Iterable, ImportFlag...)
方法将此集合中的非托管元素添加到 Realm 中。警告:包含集合字段的类尚不支持以下方法:
Realm.insert(RealmModel)
Realm.insert(Collection)
Realm.insertOrUpdate(RealmModel)
Realm.insertOrUpdate(Collection)
Realm.createAllFromJson(Class, String)
Realm.createAllFromJson(Class, JSONArray)
Realm.createAllFromJson(Class, InputStream)
Realm.createObjectFromJson(Class, String)
Realm.createObjectFromJson(Class, JSONObject)
}Realm.createObjectFromJson(Class, InputStream)
}Realm.createOrUpdateAllFromJson(Class, String)
Realm.createOrUpdateAllFromJson(Class, JSONArray)
Realm.createOrUpdateAllFromJson(Class, InputStream)
Realm.createOrUpdateObjectFromJson(Class, String)
Realm.createOrUpdateObjectFromJson(Class, JSONObject)
Realm.createOrUpdateObjectFromJson(Class, InputStream)
-
-
构造函数摘要
构造函数 Constructor 说明 RealmSet()
以非托管模式实例化 RealmSet。RealmSet(io.realm.BaseRealm baseRealm, io.realm.internal.OsSet osSet, Class<E> valueClass)
以托管模式实例化 RealmSet。RealmSet(io.realm.BaseRealm baseRealm, io.realm.internal.OsSet osSet, String className)
以托管模式实例化 RealmSet。RealmSet(Collection<E> collection)
使用另一个collection以非托管模式实例化 RealmSet。
-
方法摘要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 boolean
add(E e)
boolean
addAll(Collection<? extends E> c)
void
addChangeListener(RealmChangeListener<RealmSet<E>> listener)
向此RealmSet
添加变更侦听器。void
addChangeListener(SetChangeListener<E> listener)
向此RealmSet
添加变更侦听器。double
average(String fieldName)
返回给定字段的平均值。void
clear()
boolean
contains(Object o)
测试此Collection
是否包含指定对象。boolean
containsAll(Collection<?> c)
boolean
deleteAllFromRealm()
这将从底层 Realm 以及集合中删除集合中的所有对象。RealmSet<E>
freeze()
Class<E>
getValueClass()
String
getValueClassName()
boolean
isEmpty()
boolean
isFrozen()
boolean
isLoaded()
检查collection是否已完成数据加载。boolean
isManaged()
检查collection是否由Realm托管。boolean
isValid()
检查collection是否仍可有效使用,即Realm
实例尚未关闭。Iterator<E>
iterator()
boolean
load()
阻止collection,直到所有数据都可用。Number
max(String fieldName)
查找字段的最大值。Date
maxDate(String fieldName)
查找最大日期。Number
min(String fieldName)
查找字段的最小值。Date
minDate(String fieldName)
查找最小日期。boolean
remove(Object o)
boolean
removeAll(Collection<?> c)
void
removeAllChangeListeners()
删除所有用户定义的变更侦听器。void
removeChangeListener(RealmChangeListener<RealmSet<E>> listener)
删除指定的变更侦听器。void
removeChangeListener(SetChangeListener<E> listener)
删除指定的变更侦听器。boolean
retainAll(Collection<?> c)
int
size()
Number
sum(String fieldName)
计算给定字段的总和。Object[]
toArray()
<T> T[]
toArray(T[] a)
RealmQuery<E>
where()
返回一个 RealmQuery,可用于查询该类的特定对象。-
从接口 java.util 继承的方法collection
parallelStream, removeIf, stream, toArray
-
从接口 java.util 继承的方法设置
equals, hashCode, spliterator
-
-
-
-
构造函数详细信息
-
RealmSet
public RealmSet()
以非托管模式实例化 RealmSet。
-
RealmSet
public RealmSet(Collection<E> collection)
使用另一个collection以非托管模式实例化 RealmSet。- 参数:
collection
- 最初填充该集合的集合。
-
RealmSet
public RealmSet(io.realm.BaseRealm baseRealm, io.realm.internal.OsSet osSet, Class<E> valueClass)
以托管模式实例化 RealmSet。 此构造函数由 Realm 在内部使用。- 参数:
baseRealm
-osSet
-valueClass
-
-
RealmSet
public RealmSet(io.realm.BaseRealm baseRealm, io.realm.internal.OsSet osSet, String className)
以托管模式实例化 RealmSet。 此构造函数由动态 Realm 在内部使用。- 参数:
baseRealm
-osSet
-className
-
-
-
方法详细信息
-
isManaged
public boolean isManaged()
检查collection是否由 Realm 托管。一个托管的collection只是底层 Realm 文件中数据的包装器。在 Looper 线程上,托管 collection 将实时更新,因此它始终点向最新数据。托管collection具有线程限制,因此除了创建它们的线程之外,无法从其他线程访问托管collection。如果此方法返回
false
,则该集合为非托管集合。 非托管集合只是普通的 Java 集合,因此不会实时更新。- 指定者:
isManaged
在接口中io.realm.internal.ManageableObject
- 指定者:
isManaged
在接口中RealmCollection<E>
- 返回:
true
如果这是托管RealmCollection
,否则为false
。
-
isValid
public boolean isValid()
检查collection是否仍可有效使用,即Realm
实例尚未关闭。对于非托管collection,它将始终返回true
。- 指定者:
isValid
在接口中io.realm.internal.ManageableObject
- 指定者:
isValid
在接口中RealmCollection<E>
- 返回:
true
如果仍可使用,则为非托管collection,否则为false
。
-
IsFrozen
public boolean isFrozen()
- 指定者:
isFrozen
在接口中io.realm.internal.ManageableObject
-
contains
公共布尔包含( @Nullable 对象 o)
测试此Collection
是否包含指定对象。 Returnstrue
if and only if at least one elementelem
in thisCollection
meets following requirement:(object==null ? elem==null : object.equals(elem))
.- 指定者:
contains
在接口中Collection<E>
- 指定者:
contains
在接口中RealmCollection<E>
- 指定者:
contains
在接口中Set<E>
- 参数:
o
- 要搜索的对象。- 返回:
true
如果对象是此Collection
的元素,则为false
,否则。
-
containsAll
public boolean containsAll(Collection<?> c)
- 指定者:
containsAll
在接口中Collection<E>
- 指定者:
containsAll
在接口中Set<E>
-
addAll
public boolean addAll(Collection<? extends E> c)
-
keepAll
public boolean retainAll(Collection<?> c)
-
删除全部
public boolean removeAll(Collection<?> c)
-
addChangeListener
public void addChangeListener(RealmChangeListener<RealmSet<E>> listener)
向此RealmSet
添加变更侦听器。注册变更侦听器不会阻止底层 RealmSet 被垃圾收集。 如果对 RealmSet 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
public class MyActivity extends Activity { private RealmSet<Dog> dogs; // Strong reference to keep listeners alive \@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dogs = realm.where(Person.class).findFirst().getDogs(); dogs.addChangeListener(new RealmChangeListener<RealmSet<Dog>>() { \@Override public void onChange(RealmSet<Dog> map) { // React to change } }); } }
- 参数:
listener
- 要通知的侦听器。- 抛出异常:
IllegalArgumentException
- 如果变更侦听器为null
。IllegalStateException
- 如果您尝试从非 事件循环 或IntentService
线程添加侦听器。
-
addChangeListener
public void addChangeListener(SetChangeListener<E> listener)
向此RealmSet
添加变更侦听器。注册变更侦听器不会阻止底层 RealmSet 被垃圾收集。 如果对 RealmSet 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
public class MyActivity extends Activity { private RealmSet<Dog> dogs; // Strong reference to keep listeners alive \@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dogs = realm.where(Person.class).findFirst().getDogs(); dogs.addChangeListener(new SetChangeListener<Dog>() { \@Override public void onChange(RealmSet<Dog> set, SetChangeSet changeSet) { // React to change } }); } }
- 参数:
listener
- 要通知的侦听器。- 抛出异常:
IllegalArgumentException
- 如果变更侦听器为null
。IllegalStateException
- 如果您尝试从非 事件循环 或IntentService
线程添加侦听器。
-
removeChangeListener
public void removeChangeListener(RealmChangeListener<RealmSet<E>> listener)
删除指定的变更侦听器。- 参数:
listener
- 要删除的变更侦听器。- 抛出异常:
IllegalArgumentException
- 如果变更侦听器为null
。IllegalStateException
- 如果尝试从非 事件循环 线程中删除侦听器。
-
removeChangeListener
public void removeChangeListener(SetChangeListener<E> listener)
删除指定的变更侦听器。- 参数:
listener
- 要删除的变更侦听器。- 抛出异常:
IllegalArgumentException
- 如果变更侦听器为null
。IllegalStateException
- 如果尝试从非 事件循环 线程中删除侦听器。
-
删除所有变更监听器
public void removeAllChangeListeners()
删除所有用户定义的变更侦听器。- 抛出异常:
IllegalStateException
- 如果您尝试从非事件循环线程中删除侦听器。- 另请参阅:
RealmChangeListener
-
WHERE
public RealmQuery<E> where()
返回一个 RealmQuery,可用于查询该类的特定对象。- 指定者:
where
在接口中RealmCollection<E>
- 返回:
- RealmQuery 对象。
- 抛出异常:
IllegalStateException
- 如果 Realm 实例已关闭或父对象已删除。- 另请参阅:
RealmQuery
-
min
@Nullable public Number min( String fieldName)
查找字段的最小值。- 指定者:
min
在接口中RealmCollection<E>
- 参数:
fieldName
- 查找最小值的字段。 仅支持数字字段。- 返回:
- 如果对象不存在,或者给定字段的值为
null
,则返回null
。否则返回最小值。 确定最小值时,具有null
值的对象将被忽略。
-
Max
@Nullable public Number max( String fieldName)
查找字段的最大值。- 指定者:
max
在接口中RealmCollection<E>
- 参数:
fieldName
- 要查找最大值的字段。 仅支持数字字段。- 返回:
- 如果对象不存在,或者给定字段的值为
null
,则返回null
。否则返回最大值。 确定最大值时,具有null
值的对象将被忽略。
-
总和
公共数字总和(字符串字段名称)
计算给定字段的总和。- 指定者:
sum
在接口中RealmCollection<E>
- 参数:
fieldName
- 要求和的字段。 仅支持数字字段。- 返回:
- 总和。 如果对象不存在,或者给定字段的值为
null
,则返回0
。计算总和时,具有null
值的对象将被忽略。
-
平均值
公共双重平均值( String fieldName)
返回给定字段的平均值。- 指定者:
average
在接口中RealmCollection<E>
- 参数:
fieldName
- 计算平均值的字段。 仅支持数字字段。- 返回:
- 查询结果中对象之间给定字段的平均值。对于所有类型的数字字段,该值的类型都是 double。如果对象不存在,或者给定字段的值为
null
,则返回0
。计算平均值时,具有null
值的对象将被忽略。
-
maxDate
@Nullable public Date maxDate( String fieldName)
查找最大日期。- 指定者:
maxDate
在接口中RealmCollection<E>
- 参数:
fieldName
- 查找最大日期的字段。 如果 fieldName 不是 Date 类型,则会抛出异常。- 返回:
- 如果对象不存在,或者给定日期字段的值为
null
,则返回null
。否则,返回最大日期。 确定最大日期时,具有null
值的对象将被忽略。
-
minDate
@Nullable public Date minDate( String fieldName)
查找最小日期。- 指定者:
minDate
在接口中RealmCollection<E>
- 参数:
fieldName
- 查找最小日期的字段。如果 fieldName 不是 Date 类型,则会抛出异常。- 返回:
- 如果对象不存在,或者给定日期字段的值为
null
,则返回null
。 否则,返回最小日期。 确定最小日期时,具有null
值的对象将被忽略。
-
deleteAllFromRealm
public boolean deleteAllFromRealm()
这将从底层 Realm 以及集合中删除集合中的所有对象。- 指定者:
deleteAllFromRealm
在接口中RealmCollection<E>
- 返回:
true
如果删除了对象,则返回false
。
-
isLoaded
public boolean isLoaded()
检查collection是否已完成数据加载。- 指定者:
isLoaded
在接口中RealmCollection<E>
- 返回:
true
如果数据已加载且可用,则如果仍在加载数据,则为false
。
-
负载
公共 boolean load()
阻止collection,直到所有数据都可用。- 指定者:
load
在接口中RealmCollection<E>
- 返回:
true
如果可以成功加载数据,则为false
。
-
getValueClassName
public String getValueClassName()
-
-