美文网首页JAVA
常用流操作

常用流操作

作者: 大华夏 | 来源:发表于2018-05-18 15:03 被阅读4次
import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.Set;
import org.junit.Test;

/**
 * Unit test for simple App.
 */
public class AppTest {
    /**
     * 对集合元素进行筛选
     */
    @Test
    public void testStreamFilter() {
        System.out.println("testStreamFilter");
        List<Integer> vals = Stream.of(10, 20, 60, 900, 70, 120, 130, 160).collect(Collectors.toList());
        Stream<Integer> stream = vals.stream().filter((a) -> {
            return a > 100;
        });
        stream.forEachOrdered((a) -> System.out.println(a));
    }

    /**
     * 从流对象转换成列表
     */
    @Test
    public void testStreamCollect() {
    //  System.out.println("testStreamCollect");
        List<String> collected = Stream.of("a", "b", "c").collect(Collectors.toList());
        assertEquals(Arrays.asList("a", "b", "c"), collected);
    }

    /**
     * 在原有列表的基础上运用些规则,变成另一个列表
     */
    @Test
    public void testStreamMap() {
        System.out.println("testStreamMap");
        List<Integer> vas = Stream.of(1, 3, 4, 5, 6, 7).collect(Collectors.toList());
        List<Integer> vas2 = vas.stream().map((a) -> {
            return a + 10;
        }).collect(Collectors.toList());
        System.out.println(vas);
        System.out.println(vas2);
    }

    /**
     * 汇集多个列表的流对象到一个流对象
     */
    @Test
    public void testStreamFlatMap() {
        System.out.println("testStreamFlatMap");
        List<Integer> vals = Stream.of(Arrays.asList(1, 2, 4), Arrays.asList(56, 78, 97))
                .flatMap(numbers -> numbers.stream()).filter((a) -> {
                    System.out.println("hello");
                    System.out.println(a);
                    return true;
                }).collect(Collectors.toList());
        System.out.println(vals);
    }

    /**
     * 求最大最小值
     */
    @Test
    public void testStreamMinOrMax() {
        System.out.println("testStreamMinOrMax");
        List<Integer> vals = Stream.of(10, 20, 60, 900, 70, 120, 130, 160).collect(Collectors.toList());

        int min = vals.stream().min(Comparator.comparing((a) -> a)).get();
        int max = vals.stream().max(Comparator.comparing((a) -> a)).get();
        System.out.println(min);
        System.out.println(max);
    }
        class ValWrap {
        public int intVal;

        public long longVal;

        public ValWrap() {
        }

        public ValWrap(int intVal) {
            this.intVal = intVal;
        }

        public ValWrap(long longVal) {
            this.longVal = longVal;
        }
    }

    private List<List<ValWrap>> intValsList = Stream
            .of(Stream.of(new ValWrap(3), new ValWrap(56), new ValWrap(30)).collect(Collectors.toList()),
                    Stream.of(new ValWrap(2), new ValWrap(34), new ValWrap(52)).collect(Collectors.toList()),
                    Stream.of(new ValWrap(43), new ValWrap(14), new ValWrap(23)).collect(Collectors.toList()))
            .collect(Collectors.toList());
    
    @Test
    public void testStreamReduce() {
        int sum = Stream.of(1, 2, 3).reduce(0, ((acc, element) -> acc + element));
        System.out.println("testStreamReduce: " + sum);
        assertEquals(6, sum);
    }
    /**
     * 利用Stream函数进行链式操作
     */
    @Test
    public void testStream() {
        Set<Integer> vals = intValsList.stream().flatMap((List<ValWrap> valWraps) -> valWraps.stream())
                .filter(varWrap -> varWrap.intVal > 30).map(varWrap ->   varWrap.intVal).collect(Collectors.toSet());
        System.out.println("testStream: " + vals);
        
        int sum = vals.stream().reduce(0, (acc,el)->acc+el);        
        System.out.println("sum: "+sum);
    }
}

相关文章

  • 常用流操作

  • Java8实战读书笔记3-使用流

    一、流的常用操作 筛选:filter、distinct 截断、跳过:limit、skip 映射:map 流的扁平化...

  • java8系列-04 Stream

    Stream英文直译为“流”,其实这里也是对文件流、集合流等各种流的操作。(虽然我们最常用在Collection集...

  • Java基础笔记总结(13)-IO流(1)FileInputSt

    IO流 IO流通常用来处理设备之间的数据传输 Java对数据的操作是通过流的形式 Java用于操作的流的类都在IO...

  • Java I/O流

    文件的读写是java i/o流常用的也是最基础的操作,然而字节流,字符流,InputStream,OutpurSt...

  • Git 常用命令

    感谢浏览,欢迎评论指正,转载请标明出处。延伸:GitFlow工作流常用操作流程

  • Java8中流的归约

    1. 收集器简介 收集器就是流的终端操作操作类,常用的就是collect操作(当然还有其他的),这个操作的参数就是...

  • 第五章 使用流

    1、Streams API可以表达复杂的数据处理查询。常用的流操作总结如下: 2、流的筛选(filter、dist...

  • gitflow工作流-常用操作

    1.初始化常驻分支 develop sandbox git checkout master git branch ...

  • java stream流常用操作记录

    1.获取集合中对象的某个字段的集合(使用Set接收可以去重) 2.使用集合对象的某个字段生成map映射,方便根据i...

网友评论

    本文标题:常用流操作

    本文链接:https://www.haomeiwen.com/subject/hqtgdftx.html