Map集合的遍历方式

Map集合的遍历方式

entrySet() 获取所有Entry对象的Set集合

Map<Key, Value> map = new HashMap<>();

Set<Map.Entry<Key, Value>> entries = map.entrySet();
// 增强for
for (Map.Entry<Key, Value> entry : map.entrySet()) {
    System.out.println(entry);
}

// Iterator迭代器
// 1. 通过迭代器获取值,通过entrySet()获取所有键值对对象
Iterator<java.util.Map.Entry<Key, Value>> iterator = map.entrySet().iterator();
// 2. 迭代器遍历键值对集合,拿到每一个键值对对象
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

foreach()通过函数式接口获取Key和Value

Map<Key, Value> map = new HashMap<>();
map.forEach(new BiConsumer<Key, Value>() {
     @Override
     public void accept(Key k, Value v) {
           System.out.println(k,v);
     }
};

调用map集合的getValue()通过Set<Key>集合获取Value

Map<Key, Value> map = new HashMap<>();
// 1. 通过键获取值,通过KeySet()获取所有键
Set<Key> keys = map.keySet();
// 2. 通过所有键使用增强for遍历 
for (Key key : keys) {
// 3. 遍历途中使用get()获取value值
   Value value = map.get(key);
   System.out.println(key+"="+value);
}

获取Key对象的Set集合和Value对象的Collection集合

Map<Key, Value> map = new HashMap<>();

Set<Key> keys = map.keySet();
// 增强for遍历所有Key
for (Key key : keys) {
 	System.out.println(key);           
}

Collection<map> values = map.values();
// 增强for遍历所有Value
for (Value value : values) {
   System.out.println(values);         
}

Map的实现类有哪些

常见实现
  • TreeMap

红黑树:

1.根结点、叶子结点Nil必须黑色
2.两个红色结点不能连续
3.左右子路径黑结点必须相等

  • HashMap

哈希表Jdk1.7(哈希表:数组+链表)

1.增删改查通过hashCode确定桶位置,当桶中有多个元素需要equals比较直到相等做操作(哈希碰撞同理,进行equals比较)
2.建议添加自定义元素时重写Object的hashCod()和equals()方法

哈希表+红黑树Jdk1.8

1.当数组长度到达64后,链表长度大于8则会触发内部结构变化为红黑树,改善了Jdk1.7的链表缺陷
2.当红黑树小于6则内部结构变化为链表

  • HashTable
  • LinkedHashMap
  • Properties 此对象可以将集合数据写入到文本文件

Map键为什么唯一?存入顺序为什么不一定?如何保证key的唯一

#HashMap和HashTable区别
HashMap允许null键null值,线程不同步的,效率高
HashTable不允许null键null值,线程是同步的,效率略低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值