Day06_Map&可变参数&不可变集合&Stream流

Map集合

Map集合的特点
1.一个键对应一个值
2.键不能重复,值可以重复
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 keySet()获取所有键的集合
Collection values()获取所有值的集合
Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合
Map集合的三种遍历方式

  1. keySet()获取所有键的集合
    遍历Set 根据键拿到值
  2. Set<Map.Entry<K,V>> entrySet() 获取所有键值对对象的集合
    getKey()获取键
    getValue()获取值
    3.forEach() forEach循环 中间是lambda表达式 直接获得键和值

HashMap集合 .
HashMap集合的特点:
1.键和值可以为null
2. HashMap底层是哈希表结构的
3.依赖hashCode方法和equals方法保证键的唯一
4.如果键要存储的是自定义对象,需要重写hashCode和equals方法
TreeMap集合
TreeMap集合的特点
1.底层数据结构是红黑树
2. 依赖自然排序或者比较器排序,对键进行排序
3.如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则
4.Key不能为null Value可以为null

可变参数

格式:
修饰符 返回值类型 方法名(数据类型…变量名){}
注意事项:
1.一个方法中可变参数只能存在一个
2.可变参数必须放在参数列表的最后
3.可变参数实际是一个数组

不可变集合

JDK1.9版本之后
在List、Set、Map接口中,都存在of方法,可以创建一个不可变的集合

  • 这个集合不能添加,不能删除,不能修改
  • 但是可以结合集合的带参构造,实现集合的批量添加
  • 在Map接口中,还有一个ofEntries方法可以提高代码的阅读性
    • 首先会把键值对封装成一个Entry对象,再把这个Entry对象添加到集合当中

Stream流

Stream流的好处

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

生成Stream流的方式:

  • Collection集合:
    通过默认的stream()获得流对象
    ArrayList list = new ArrayList();
    list.stream()
  • Map集合:
    需要通过转换为Set集合来间接获得流对象
    Map <K,V> map =new HashMap<>();
    Set keys = map.keySet();
    keys.stream();
  • 数组:
    通过Arrays类中的静态方法stream生成流
    int [] arr ={1,2,3,4,5,6}
    Arrays.stream(arr);
  • 同种类型的数据:
    通过Stream接口的静态方法of(T… values)生成流
    Stream.of(1,2,3,4,5,6,7,8,9)
    Stream流的中间方法(过滤数据)
    filter :指定条件过滤数据 true通过继续下一个条件 false被过滤掉
    map:将类型转换为指定另外一个的类型
    limit:截取流中指定的元素个数(限制个数)
    skip:跳过流中指定元素个数返回由该流的剩余元素组成的流
    concat:将两个流合并 返回一个新的流
    distinct():返回流的不同元素(去重)
    sorted(比较器) 排序
    Stream流的终结方法
    forEach:对流中的每个元素操作
    count:返回流中的元素数
    Stream流中的收集操作
    R collect(Collector collector)把结果收集到集合中
    toSet:将流中过滤通过的数据收集到Set集合中
    toList:将流中过滤通过的数据收集到List集合中
    toMap:将流中过滤通过的数据收集到Map集合中
    Stream流的注意事项:
    流都是单向的 使用到终结方法就结束了 再使用这个流就会爆出非法操作流的异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值