安装包 io.realm

类 RealmMap<K,​V>

  • 类型参数:
    K - 此映射中存储的键的类型
    V - 此映射中存储的值的类型
    所有已实现的接口:
    io.realm.internal.Freezable<RealmMap<K,​V>>, io.realm.internal.ManageableObject , Map<K,​V>
    直接已知子类:
    RealmDictionary

    public abstract class RealmMap<K,​V>
    extends Object
    implements Map<K,​V>, io.realm.internal.ManageableObject, io.realm.internal.Freezable<RealmMap<K,​V>>
    RealmMap 用于将键映射到值。 RealmMap 不能包含重复的键,每个键最多只能映射到一个值。 RealmMap 不能有null键,但可以有null值。

    RealmList类似,RealmDictionary 可以在托管和非托管模式下运行。 在托管模式下,RealmDictionary 会将其所有内容持久保存在 Realm 中,而在非托管模式下,其功能类似于HashMap

    托管 RealmDictionaries 只能由 Realm 创建,并且每当底层 Realm 更新时都会自动更新其内容。Managed RealmDictionaries 只能使用指向RealmObject的 RealmDictionary 字段的 getter 来访问。

    非托管 RealmDictionaries 可由用户创建,可包含托管和非托管 RealmObject。 这在处理 JSON 反序列化器(例如 GSON)或其他将值注入到类中的框架时非常有用。 可以使用Realm.copyToRealm(Iterable, ImportFlag...)方法将非托管 RealmMap 添加到 Realm。

    • 方法详细信息

      • isManaged

        public boolean isManaged()
        指定者:
        isManaged 在接口中 io.realm.internal.ManageableObject
      • isValid

        public boolean isValid()
        指定者:
        isValid 在接口中 io.realm.internal.ManageableObject
      • IsFrozen

        public boolean isFrozen()
        指定者:
        isFrozen 在接口中 io.realm.internal.ManageableObject
      • size

        public int size()
        指定者:
        size 在接口中 Map<K,​V>
      • isEmpty

        public boolean isEmpty()
        指定者:
        isEmpty 在接口中 Map<K,​V>
      • 获取

        public V get​( 对象 key)
        指定者:
        get 在接口中 Map<K,​V>
      • putAll

        public void putAll​(Map<? extends K,​? extends V> m)
        指定者:
        putAll 在接口中 Map<K,​V>
      • 清除

        public void clear()
        指定者:
        clear 在接口中 Map<K,​V>
      • keySet

        public Set<K> keySet()
        指定者:
        keySet 在接口中 Map<K,​V>
      • 冻结

        public RealmMap<K,​V> freeze()
        指定者:
        freeze 在接口中 io.realm.internal.Freezable<K>
      • addChangeListener

        public void addChangeListener​(MapChangeListener<K,​V> listener)
        向此RealmMap添加变更侦听器。

        注册变更侦听器不会阻止底层 RealmMap 被垃圾收集。 如果对 RealmMap 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。

         
         public class MyActivity extends Activity {
        
             private RealmMap<String, 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 MapChangeListener<String, Dog>() {
                   \@Override
                   public void onChange(RealmMap<String, Dog> map, MapChangeSet<String> changeSet) {
                       // React to change
                   }
               });
             }
         }
         
         
        参数:
        listener - 要通知的变更侦听器。
        抛出异常:
        IllegalArgumentException - 如果变更侦听器为null
        IllegalStateException - 如果您尝试从非 事件循环 或IntentService线程添加侦听器。
      • addChangeListener

        public void addChangeListener​(RealmChangeListener<RealmMap<K,​V>> listener)
        向此RealmMap添加变更侦听器。

        注册变更侦听器不会阻止底层 RealmMap 被垃圾收集。 如果对 RealmMap 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。

         
         public class MyActivity extends Activity {
        
             private RealmMap<String, 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<RealmMap<String, Dog>>() {
                   \@Override
                   public void onChange(RealmMap<String, Dog> map) {
                       // React to change
                   }
               });
             }
         }
         
         
        参数:
        listener - 要通知的变更侦听器。
        抛出异常:
        IllegalArgumentException - 如果变更侦听器为null
        IllegalStateException - 如果您尝试从非 事件循环 或IntentService线程添加侦听器。
        另请参阅:
        RealmChangeListener
      • removeChangeListener

        public void removeChangeListener​(MapChangeListener<K,​V> listener)
        删除指定的变更侦听器。
        参数:
        listener - 要删除的变更侦听器。
        抛出异常:
        IllegalArgumentException - 如果变更侦听器为null
        IllegalStateException - 如果尝试从非 事件循环 线程中删除侦听器。
      • 删除所有变更监听器

        public void removeAllChangeListeners()
        删除所有用户定义的变更侦听器。
        抛出异常:
        IllegalStateException - 如果您尝试从非事件循环线程中删除侦听器。
        另请参阅:
        RealmChangeListener