Java集合Map⭐️用几个实例分析该集合的使用方法以及衍生的一些集合

目录

hello,小伙伴们大家好,今天分析分析集合Map的使用

Java Map示例: (泛型风格)

Java Map 示例: (按值降序)

好了,常用的存储数据的方法到这里就结束了


hello,小伙伴们大家好,今天分析分析集合Map的使用

Java的Map接口是一种键值对映射的数据结构,提供了一种快速查找、插入和删除元素的方法。Map接口定义了一些常用的方法,包括:

  1. V put(K key, V value):将指定的值与指定的键关联(可选操作)。如果此映射中以前没有该键的映射关系,则返回null。
  2. V get(Object key):返回指定键所对应的值。如果此映射中不存在该键的映射关系,则返回null。
  3. V remove(Object key):从映射中移除指定键的映射关系。如果此映射中不存在该键的映射关系,则返回null。
  4. boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回true。
  5. boolean containsValue(Object value):如果此映射包含指定值的映射关系,则返回true。
  6. int size():返回此映射中的键值对个数。
  7. Set keySet():返回此映射中包含的所有键的集合。
  8. Collection values():返回此映射中包含的所有值的集合。
  9. Set> entrySet():返回此映射中包含的所有键值对的集合。

 涉及到的几种类为

类名 描述
HashMapHashMap是Map的实现,不维护顺序
LinkedHashMapLinkedHashMap是Map的实现,继承自Hash Map,按照插入顺序维护元素顺序
TreeMapTree Map是Map和Sorted Map的实现,按照升序维护元素顺序

Java Map示例: (泛型风格)

public class T007 {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(104,"value_4");
        map.put(103,"value_3");
        map.put(101,"value_1");
        map.put(102,"value_2");

        map.entrySet().stream().forEach(System.out :: println);
        System.out.println("过滤小于101的key之后:------------------------");
        map.entrySet().stream().filter(e->e.getKey()>101).forEach(System.out :: println);
    }
}

put方法原理

  1. 首先,根据键的hashCode确定存储位置。
  2. 如果该位置还没有元素,直接插入新的键值对。
  3. 如果该位置已经存在元素(发生哈希冲突),则通常会采用链表、红黑树等方式来解决冲突,具体取决于具体的Map实现。(比如HashMap使用拉链法解决哈希冲突,而TreeMap基于红黑树实现。)
  4. 如果存在相同的键,则新的值会覆盖旧的值。
  5. 在插入完成后,可能需要根据具体实现进行扩容、平衡树结构等操作,以维护Map的性能和内部结构。

Java Map 示例: (按值降序)

public class T007 {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(104,"value_4");
        map.put(103,"value_3");
        map.put(101,"value_1");
        map.put(102,"value_2");

        map.entrySet().stream().forEach(System.out :: println);
        System.out.println("按值降序排序之后:------------------------");
        map.entrySet().stream().sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).forEach(System.out :: println);
    }
}

好了,常用的存储数据的方法到这里就结束了


不积跬步,无以千里  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先锋 Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值