Java Stream操作

Dzone

cheatsheet

Collectors

Collections

流水线式的处理数据

  • 生产流的方式
    • Collection集合
    • Map集合
    • 数组
  • 中间操作
    • Stream filter(Predicate predicate)利用谓词接口进行过滤筛选.
    • Stream limit(long n)截断流中数据,n为返回个数
    • Stream skip(long n)指定跳过n个数据,返回剩下的流
    • static Stream concat(Stream a,Stream b)组合两个流成一个流
    • Stream distinct()返回流中独特的元素组成的流
    • Stream sorted()返回自然排序后的流
    • Stream sorted(Comparator comparator)返回经过自定义比较器的排序流
    • Stream map(Function mapper)返回经过指定函数处理的结果的流
    • IntStream mapToInt(ToIntFunction mapper)返回IntStream,源流映射成Int流
  • 终结操作
    • 一般操作
      • void forEach(Consumer action)指定消费器,对每个流中元素进行消费
      • long count()返回流中元素个数
    • 收集操作
      • R collect(Collector collector)把结果收集到集合中
      • Collectors
        • public static Collector toList() 收集流到List集合中
        • public static Collector toSet() 收集流得到Set集合中
        • public static Collector toMap(Function keyMapper,Function valueMapper) 收集元素到Map集合中
        • 此工具类返回的都是包含所有元素的Collector

实例操作Stream

  • Collection生成Stream
1
2
3
4
5
List<String> list = new ArrayList<String>();
Stream<String> listStream = list.stream();

Set<String> set = new HashSet<String>();
Stream<String> setStream = set.stream();
  • Map系列生成Stream
1
2
3
4
Map<String,Integer> map = new HashMap<String,Integer>();
Stream<String> keyStream = map.keySet().stream();
Stream<Integer> valueStream = map.values().stream();
Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream();
  • 数组生成Stream
1
2
3
String[] strArray = {"hell","world","niubi"};
Stream<String> strStream = Stream.of(strArray);
Stream<String> okStream = Stream.of("jjj","hahha","iii");

笔记扩充