Java新手咨询IntStream链式流操作及对应代码段的具体作用
代码功能拆解
第一段IntStream链式操作功能
这段的作用是从传入的prices列表里,提取所有偶数下标位置的元素,组装成新的inputCountryCodes列表:
- 先通过
IntStream.range(0, prices.size())生成从0到prices列表长度减1的连续整数下标序列 - 用
filter(index -> index % 2 == 0)过滤出所有偶数下标(注意Java列表下标从0开始,也就是取第1、3、5...个元素,对应下标0、2、4...) mapToObj(prices::get)把过滤出来的下标转换成prices列表对应位置的元素- 最后
collect(Collectors.toList())把结果收集成新的字符串列表。
举个直观例子:如果传入的prices是["CN","100","US","200","JP","180"],提取完成的inputCountryCodes就是["CN","US","JP"],刚好是所有偶数下标的国家码字段。
第二段集合流操作功能
这段的作用是对上面得到的inputCountryCodes列表做去重,得到没有重复元素的distinctInputCountryCodes列表:
- 调用
stream()把列表转换成流对象 - 用
distinct()方法按照字符串的equals规则去重,保留元素第一次出现的顺序 - 最后收集为新的列表。
举个直观例子:如果上面得到的inputCountryCodes是["CN","US","CN","JP"],去重后结果为["CN","US","JP"]。
内容的提问来源于stack exchange,提问作者JustDoIt
相关产品推荐
相关产品推荐

