前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA8新特性(四)——Stream API

JAVA8新特性(四)——Stream API

作者头像
逝兮诚
发布2019-10-30 18:57:57
4040
发布2019-10-30 18:57:57
举报
文章被收录于专栏:代码人生代码人生代码人生

Stream使用来处理list、array这些集合的新API。链式编程,使用Stream处理代码更简洁。

创建流

steam() : 创建普通流。

parallelStream: 创建并行流。并行流是对流的处理是并行的,不是顺序的。

public List<String> codelist = Arrays.asList("1", "2", "3", "4", "", "5", "6");

public Stream<String> getStream() {
    return codelist.stream();
}

@Test
public void paralletTest() {
    codelist.parallelStream().forEach(System.out::println);
}

forEach

strean对象的forEach方法,用于遍历。参数是Consumer接口

void forEach(Consumer<? super T> action);

用法

codelist.parallelStream().forEach(System.out::println);

打印

map

map返回一个新的stream,对每个源元素进行操作处理。参数是function

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

用法

@Test
public void mapTest() {
    getStream().filter((s) -> {
        return s != null && !"".equals(s);
    }).map((a) -> {
        return String.valueOf(Integer.valueOf(a) * 2);
    }).forEach(System.out::println);
}

结果

filter

filter是过滤器,下面是过滤list中的空string的例子。

return stream.filter((s) -> {
    return s != null && !"".equals(s);
}).collect(Collectors.toList());

limit

limit用于获得指定数量的流,参数是long

Stream<T> limit(long maxSize);

下面是获得5位流

getStream().filter((s) -> {
    return s != null && !"".equals(s);
}).limit(5).forEach(System.out::println);

sorted

sorted用于排序,参数Comparator

Stream<T> sorted(Comparator<? super T> comparator);

下面是按值排序的

@Test
public void sortTest() {
    getStream().filter((s) -> {
        return s != null && !"".equals(s);
    }).sorted((a, b) -> {
        return Integer.valueOf(b) - Integer.valueOf(a);
    }).forEach(System.out::println);
}

Collectors

Collecors有许多规约操作,如将流转成list或其他。这里是返回list和字符串。

@Test
public void collectTest() {
    List<String> filterList = getStream().filter((s) -> {
        return s != null && !"".equals(s);
    }).collect(Collectors.toList());
    System.out.println("filter list : " + filterList);

    String joinlist = getStream().filter((s) -> {
        return s != null && !"".equals(s);
    }).collect(Collectors.joining(","));
    System.out.println("joinlist:" + joinlist);
}

IntSummaryStatistics

IntSummaryStatistics可以对数字的集合做统计。如常见的最大最小值、平均值、总和。

@Test
public void intSummaryStatistics() {
    List<Integer> numbers = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15);
    IntSummaryStatistics stats = numbers.stream().mapToInt((x)->x).summaryStatistics();
    System.out.println("最大的数:" + stats.getMax());
    System.out.println("最小的数:" + stats.getMin());
    System.out.println("和:" + stats.getSum());
    System.out.println("数据长度:" + stats.getCount());
    System.out.println("平均数:" + stats.getAverage());
}

结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建流
  • forEach
  • map
  • filter
  • limit
  • sorted
  • Collectors
  • IntSummaryStatistics
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档