专栏首页代码人生JAVA8新特性(四)——Stream API

JAVA8新特性(四)——Stream API

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());
}

结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JAVA8新特性(五)——DateTime API

    2.类比较多,既有java.util.Date、又有java.sql.Date,同时Data的format和parse又在java.util.txt下。

    逝兮诚
  • Spring事务失效的两种情况

    spring的事务默认是对RuntimeException进行回滚,而不继承RuntimeException的不回滚。因为在java的设计中,它认为不继承Run...

    逝兮诚
  • 蓝桥杯 java 01字串

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • Java基本数据类型包装类常用的值

    cxuan
  • Java基础类库

    二十三年蝉
  • 算法题3

    py3study
  • Java和Python中的整除和求余运算

    System.out.println("5 / 3 = " + (5 / 3));

    py3study
  • org.apache.commons.l

    py3study
  • 使用LocalDateTime来代替Date

    在我们使用Date的时候,会发现很多无法理解的返回值,而且有很多方法是已经被弃用了的

    挨踢小子部落阁
  • 慎用System.out.println!!!

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    林老师带你学编程

扫码关注云+社区

领取腾讯云代金券