Map集合、Stream流、List.of、Set.of、Map.of

Map集合

概述:interface Map<K,V>  K:键的类型;V:值的类型

特点:

  • 双列集合,一个键对应一个值
  • 键不可以重复,值可以重复

Map集合的方法

方法名说明
V put(K key,V value)添加元素
V remove(Object key)根据键删除键值对元素
void clear()移除所有的键值对元素
boolean containsKey(Object key)判断集合是否包含指定的键
boolean containsValue(Object value)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中键值对的个数
V get(Object key)根据键获取值
Set<K> keySet()获取所有键的集合
Collection<V> values()获取所有值的集合
Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合

Map集合的遍历

  • 获取所有键值对对象的集合:Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
  • 遍历键值对对象的集合,得到每一个键值对对象:用增强for实现,得到每一个Map.Entry
  • 根据键值对对象获取键和值:用getKey()得到键、用getValue()得到值

HashMap集合特点:

  • HashMap底层是哈希表结构的
  • 依赖hashCode方法和equals方法保证键的唯一
  • 如果键要存储的是自定义对象,需要重写hashCode和equals方法

TreeMap集合特点:

  • TreeMap底层是红黑树结构
  • 依赖自然排序或者比较器排序,对键进行排序
  • 如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则

Stream流

Stream流是对集合(Collection)对象功能的增强,与Lambda表达式结合,可以提高编程效率、间接性和程序可读性。

Stream流的好处:

  • 直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印
  • Stream流把真正的函数式编程风格引入到Java中
  • 代码简洁

生成Stream流的方式:

  • Collection体系集合

        使用默认方法stream()生成流, default Stream<E> stream()

  • Map体系集合

        把Map转成Set集合,间接的生成流

  • 数组

        通过Arrays中的静态方法stream生成流

  • 同种数据类型的多个数据

        通过Stream接口的静态方法of(T... values)生成流

Stream流的中间方法:

中间操作的意思是,执行完此方法之后,Stream流依然可以继续执行其他操作

方法名说明
Stream<T> filter(Predicate predicate)用于对流中的数据进行过滤
Stream<T> limit(long maxSize)返回此流中的元素组成的流,截取前指定参数个数的数据
Stream<T> skip(long n)跳过指定参数个数的数据,返回由该流的剩余元素组成的流
static <T> Stream<T> concat(Stream a, Stream b)合并a和b两个流为一个流
Stream<T> distinct()返回由该流的不同元素(根据Object.equals(Object) )组成的流

Stream流终结操作方法:

终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作

方法名说明
void forEach(Consumer action)对此流的每个元素执行操作
long count()返回此流中的元素数

Stream流收集操作方法: 

对数据使用Stream流的方式操作完毕后,可以把流中的数据收集到集合中

方法名说明
R collect(Collector collector)把结果收集到集合中

工具类Collectors提供了具体的收集方式

public static <T> Collector toList()把元素收集到List集合中
方法名说明
public static <T> Collector toSet()把元素收集到Set集合中
public static Collector toMap(Function keyMapper,Function valueMapper)把元素收集到Map集合中

List.of、Set.of、Map.of

JDK9以后的新增特性,List接口,Set接口,Map接口:里面增加了一个静态的方法of,给集合一次性添加多个元素

使用前提:

       当集合中存储的元素个数已经确定了,不再改变时使用。

注意点:

  • of方法只适用于List接口,Set接口,Map接口,不适用于接口的实现类
  • of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
  • Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值