Java中Map的不同实现以及泛型

发布时间 2023-12-22 08:05:40作者: Cyptals

嵌套类/内置类/内部类/内部接口

K : key V : value E : element R : ReturnType T : type

Map<K, V> : 存储的是键值对。每个键值对成为映射项(Entry);键唯一,值是可重复的;每个键最多只能映射到一个值。 |HashMap : 键采用哈希表结构

|Hashtable : 键采用哈希表结构

|TreeMap : 键采用二叉树结构

void putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 V put(K key, V value) : 当键是第一次存入map时,返回 null ; 如果不是第一次,用新值取代旧值,并将旧值作为返回值返回 将指定的值与此映射中的指定键关联(可选操作)。

 

Map<K, V> : 存储的是键值对。每个键值对成为映射项(Entry);键唯一,值是可重复的;每个键最多只能映射到一个值。 |HashMap<K, V> : 键采用哈希表结构 允许null键null值 线程不安全 |LikedHashMap<K, V> : 键采用 哈希表 + 链表 结构 保证键的插入顺序和迭代顺序一致 |Hashtable<Object,Object> : 键采用哈希表结构 不允许null键null值 线程安全 |Properties : 表示了一个持久的属性集。 Properties 可保存在流中或从流中加载。 属性列表中每个键及其对应值都是一个字符串。 |TreeMap<K, V> : 键采用二叉树结构

 

Map<K, V> : 存储的是键值对。每个键值对成为映射项(Entry);键唯一,值是可重复的;每个键最多只能映射到一个值。 |HashMap<K, V> : 键采用哈希表结构 允许null键null值 线程不安全 |LikedHashMap<K, V> : 键采用 哈希表 + 链表 结构 保证键的插入顺序和迭代顺序一致 |Hashtable<Object,Object> : 键采用哈希表结构 不允许null键null值 线程安全 |Properties : 表示了一个持久的属性集。 Properties 可保存在流中或从流中加载。 属性列表中每个键及其对应值都是一个字符串。 |TreeMap<K, V> : 键采用二叉树结构 对键进行排序 1.自然排序 : Comparable<T> : 要求实体类实现该接口

2.自定义排序 : Comparator<T> : 不需要实体类实现该接口,需要编写比较器

 

lambda 格式 : () -> {}

 

泛型 : 操作的数据类型不确定的问题

ObjectDao objectDao = new ObjectDao();

objectDao.setObject(new Student());

User user = (User) objectDao.getObject();

 

? : 通配符

泛型的上下限 : 上限: 从父类开始向下进行限制 ? extends E E 和 E的子类型 下限: 从父类开始向下进行限制 ? super E E 和 E的父类型