javaAPI(Map双列集合)

Map集合成员方法

增加功能

V put(K key, V value)

返回的是被覆盖的值当key在集合中不存在时,添加元素;当key在集合存在时候,替换元素
删除功能
void clear
清除所有键值对数据
V remove(Object key)
根据指定的键删除键值对
判断功能
boolean containsKey(Object key)
判断指定的键是否在集合中存在
boolean containsValue(Object value)
判断指定的值是否在集合中存在
boolean isEmpty
判断集合是否为空
获取功能

Set<Map.Entry<K,V>> entrySet()

键值对对象的集合
Object get(Object key)
根据键获取值
Set keySet():
所有键的集合
Collection values()
所有值的集合
长度
int size()
获取长度

Map集合的两种遍历方式
创建Map集合

// 创建集合对象
Map<String, String> map = new HashMap<String, String>();

// 创建并添加元素
map.put("杨过", "小龙女");
map.put("郭靖", "黄蓉");
map.put("梁山伯", "祝英台");
map.put("牛郎", "织女");

第一种遍历方式(通过keySet())

Set<String> keySet = map.keySet();
for(String key : keySet){
System.out.println("key:"+key+" value"+map.get(key));
}

第二种遍历方式(通过entrySet())

Set<Entry<String,String>> entrySet = map.entrySet();
for(Map.Entry<String, String> entry : entrySet){
System.out.println("key"+entry.getKey()+" value"+entry.getValue());
}

HashMap存储自定义对象实现去重 (将自定义对象存储到Key的位置)
HashMap
自定义对象重写hashCode()和equals()方法,并且使用HashMap

TreeMap
方案1:自定义对象实现Comparable 接口,并且重写compareTo方法
方案2:创建TreeMap集合对象时通过TreeMap的构造方法传入一个Comparator对象

TreeMap存储自定义对象实现排序 (将自定义对象存储到Key的位置
方案1
自定义对象实现Comparable 接口,并且重写compareTo方法
方案2
创建TreeMap集合对象时通过TreeMap的构造方法传入一个Comparator对象

Hashtable和HashMap区别
HashTable:
线程安全,效率低,不允许null键和值
HashMap:
线程不安全,效率高,允许null键和值

如果想线程安全,并且可以存储null怎么办,使用ConcurrentHashMap

|–Map(双列 底层结构是针对键有效,跟值无关)
|–HashMap
底层数据结构是哈希表。
线程不安全,效率高。允许null键和值

怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
|–Hashtable
底层数据结构是哈希表。
线程安全,效率低。不允许null键和值

怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
|–TreeMap
底层数据结构是二叉树。
线程不安全,效率高。

怎么保证唯一性的呢?是根据返回是否是0。
怎么保证排序的呢?两种方式
自然排序(元素具备比较性)
实现Comparable接口
方法:compareTo(obj)
比较器排序(集合具备比较性)
实现Comparator接口
方法:compare(obj1,obj2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值