zoukankan      html  css  js  c++  java
  • java8 stream

    import org.junit.Test;
    
    import java.util.*;
    import java.util.stream.Collectors;
    
    
    /**
     * Created by shaozhiqi on 2019/9/26
     */
    public class testLam {
    
    
        @Test
        public void testCreateThread() {
            Thread thread1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("用匿名内部类的方式来创建线程");
                }
            });
    
            Thread thread2 = new Thread(() -> {
                System.out.println("使用Lambda来创建线程");
            });
    
            thread1.start();
            thread2.start();
    
            //执行结果:
            //用匿名内部类的方式来创建线程
            //使用Lambda来创建线程
    
        }
    
        //stream() − 串行流处理
        //parallelStream() - 并行流处理
        @Test
        public void testSteam() {
            Map map1 = new HashMap<String, String>();
            map1.put("age", 20);
            map1.put("name", "shaozhiqi");
            map1.put("company", "A公司");
    
            Map map2 = new HashMap<String, String>();
            map2.put("age", 21);
            map2.put("name", "qqq");
            map2.put("company", "B公司");
    
            Map map3 = new HashMap<String, String>();
            map3.put("age", 19);
            map3.put("name", "bbb");
            map3.put("company", "B公司");
    
            Map map4 = new HashMap<String, String>();
            map4.put("age", 25);
            map4.put("name", "LLL");
            map4.put("company", "C公司");
    
            List<Map> lsM = new ArrayList<>();
            lsM.add(map1);
            lsM.add(map2);
            lsM.add(map3);
            lsM.add(map4);
    
            //年龄过滤-------------------------------------------------------------------------------------------------------
            List<Map> ls1 = lsM.stream().filter(m -> Integer.valueOf(m.get("age").toString()) > 20).collect(Collectors.toList());
            ls1.forEach(map -> System.out.println(map));
            //结果:
            //{name=qqq, company=B公司, age=21}
            //{name=LLL, company=C公司, age=25}
    
            //收集所有人姓名-------------------------------------------------------------------------------------------------------
            List<String> ls2 = lsM.stream().map(m -> m.get("name").toString()).collect(Collectors.toList());
            ls2.forEach(name -> System.out.println(name));
            //结果:
            //shaozhiqi
            //qqq
            //bbb
            //LLL
    
            //数据去重------------------------------------------------------------------------------------------------------
            Map map5 = new HashMap<String, String>();
            map5.put("age", 25);
            map5.put("name", "LLL");
            map5.put("company", "C公司");
            lsM.add(map5);
            List<Map> ls3 = lsM.stream().distinct().collect(Collectors.toList());
            ls3.forEach(map -> System.out.println(map));
            //结果:
            //{name=shaozhiqi, company=A公司, age=20}
            //{name=qqq, company=B公司, age=21}
            //{name=bbb, company=B公司, age=19}
            //{name=LLL, company=C公司, age=25}
    
    
            //排序----------------------------------------------------------------------------------------------------------
           /* List<Map> ls4 = lsM.stream().sorted(new Comparator<Map>() {
                @Override
                public int compare(Map o1, Map o2) {
                    return o1.get("age").toString().compareTo(o2.get("age").toString());
                }
            }).collect(Collectors.toList());*/
            List<Map> ls4 = lsM.stream().sorted(Comparator.comparing(m -> Integer.valueOf(m.get("age").toString()))).collect(Collectors.toList());
            ls4.forEach(map -> System.out.println(map));
            //结果:
            //{name=bbb, company=B公司, age=19}
            //{name=shaozhiqi, company=A公司, age=20}
            //{name=qqq, company=B公司, age=21}
            //{name=LLL, company=C公司, age=25}
            //{name=LLL, company=C公司, age=25}
    
            //limit---------------------------------------------------------------------------------------------------------
            List<Map> ls5 = lsM.stream().limit(2).collect(Collectors.toList());
            ls5.forEach(map -> System.out.println("limit:" + map));
            //结果:
            //limit:{name=shaozhiqi, company=A公司, age=20}
            //limit:{name=qqq, company=B公司, age=21}
    
            //取集合的最小值方法1和方法二都可以,我选择二,1不推荐-------------------------------------------------------------
            //Map map=lsM.stream().min((m1,m2)->m1.get("age").toString().compareTo(m2.get("age").toString())).get();
            Map map = lsM.stream().min(Comparator.comparing(m -> m.get("age").toString())).get();
            System.out.println("min:" + map);
            //结果:
            //min:{name=bbb, company=B公司, age=19}
    
    
            //判断是否存在某个人,过滤也行。也有其他的match可以自己测试---------------------------------------------------------
            boolean haveName = lsM.stream().anyMatch(m -> "shaozhiqi".equals(m.get("name").toString()));
            if (haveName) {
                System.out.println("有 shaozhiqi");
            }
            //结果
            //有 shaozhiqi
    
        
    
        }
    }
  • 相关阅读:
    DOM增删改替换
    DRF框架之序列化器serializers组件详解
    DRF基础操作流程
    DRF框架基础知识储备
    selectors模块
    并发编程——IO模型详解
    高性能web服务器——nginx
    Django中的ORM如何通过数据库中的表格信息自动化生成Model 模型类?
    使用cors完成跨域请求处理
    Flask基础
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/11592514.html
Copyright © 2011-2022 走看看