[转载] java8 lambda表达式 List转为Map

参考链接: 使用Lambda表达式检查字符串在Java中是否仅包含字母

public static void main(String[] args) {

    List<User> userList = new ArrayList<User>();

    User user0 = new User("han1", "男1", 20);

    User user1 = new User("han1", "男", 25);

    User user2 = new User("han2", "男", 21);

    User user3 = new User("han3", "男", 22);

    User user4 = new User("han4", "男", 23);

    User user5 = new User("han5", "男", 24);

    userList.add(user0);

    userList.add(user1);

    userList.add(user2);

    userList.add(user3);

    userList.add(user4);

    userList.add(user5);

    /**

     * list 转map

     * 注意:要是key重复的话 会报错Duplicate key ....

     * key name  都是han1

     * 可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2

     */

//        Arrays.stream(wechatPrintInfos.toArray()).forEach(e -> {

//            OrderNolist.add(e.);

//        });

//        Map<Long, OrderAddress> addressListMap = addressList.stream().collect(Collectors.toMap(OrderAddress::getOrderNo, p -> p, (key1, key2) -> key1));

//        Map<Integer, String> dictMap = Arrays.stream(addressList).filter(k -> null != k.getOrderNo()).collect(Collectors.toMap(e -> e.getDictKey().intValue(), DictionaryValueVo::getDictValue));

//        orderAcceptList.stream().forEach(row->{

//            orderAcceptService.updateByPrimaryKey(row);

//        });

 

//        List<Long> OrderNolist = new ArrayList<Long>();

//        printService.queryPrintInfo(customerCode).stream().forEach(p ->

//            OrderNolist.add(p.getOrderNo())

//        );

 

    System.out.println("userList="+JSONObject.toJSONString(userList));

    Map<String,Object> compMap= userList.stream().collect(Collectors.toMap(User::getUserName, a -> a.getAge() + "===" + a.getSex(), (k1, k2) -> k1));

    for(Object obj : compMap.keySet()) {

        String key = (String) obj;//取到每一个key值

        String value = (String) compMap.get(key);

        System.out.println(key + "=" + value);

    }

 

    /**

     * list中以某个属性分组,比如用name分组

     */

    Map<String,List<User>> map= userList.stream().collect(Collectors.groupingBy(User::getUserName));

    System.out.println(map);

 

}

 

下面是看的别人的Demo 

    package com.mc.day1.lambda;

    

    import org.junit.Before;

    import org.junit.Test;

    

    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.List;

    import java.util.Optional;

    import java.util.stream.Stream;

    

    /**

     * =================规约与收集==================练习

     */

    public class Lambda4 {

        

        List<Transaction> transactions = null;

        

        @Before

        public void before(){

            Trader raoul = new Trader("Raoul", "Cambridge");

            Trader mario = new Trader("Mario", "Milan");

            Trader alan = new Trader("Alan", "Cambridge");

            Trader brian = new Trader("Brian", "Cambridge");

            

            transactions = Arrays.asList(

                    new Transaction(brian, 2011, 300),

                    new Transaction(raoul, 2012, 1000),

                    new Transaction(raoul, 2011, 400),

                    new Transaction(mario, 2012, 710),

                    new Transaction(mario, 2012, 700),

                    new Transaction(alan, 2012, 950)

            );

        }

        

        //1. 找出2011年发生的所有交易, 并按交易额排序(从低到高)

        @Test

        public void test1(){

            transactions.stream()

                        .filter((t) -> t.getYear() == 2011)

                        .sorted((t1, t2) -> Integer.compare(t1.getValue(), t2.getValue()))

                        .forEach(System.out::println);

        }

        

        //2. 交易员都在哪些不同的城市工作过?

        @Test

        public void test2(){

            transactions.stream()

                        .map((t) -> t.getTrader().getCity())

                        .distinct()

                        .forEach(System.out::println);

        }

        

        //3. 查找所有来自剑桥的交易员,并按姓名排序

        @Test

        public void test3(){

            transactions.stream()

                        .filter((t) -> t.getTrader().getCity().equals("Cambridge"))

                        .map(Transaction::getTrader)

                        .sorted((t1, t2) -> t1.getName().compareTo(t2.getName()))

                        .distinct()

                        .forEach(System.out::println);

        }

        

        //4. 返回所有交易员的姓名字符串,按字母顺序排序

        @Test

        public void test4(){

            transactions.stream()

                        .map((t) -> t.getTrader().getName())

                        .sorted()

                        .forEach(System.out::println);

            

            System.out.println("-----------------------------------");

            

            String str = transactions.stream()

                        .map((t) -> t.getTrader().getName())

                        .sorted()

                        .reduce("", String::concat);

            

            System.out.println(str);

            

            System.out.println("------------------------------------");

            

            transactions.stream()

                        .map((t) -> t.getTrader().getName())

                        .flatMap(Lambda4::filterCharacter)

                        .sorted((s1, s2) -> s1.compareToIgnoreCase(s2))

                        .forEach(System.out::print);

        }

        

        public static Stream<String> filterCharacter(String str){

            List<String> list = new ArrayList<>();

            

            for (Character ch : str.toCharArray()) {

                list.add(ch.toString());

            }

            

            return list.stream();

        }

        

        //5. 有没有交易员是在米兰工作的?

        @Test

        public void test5(){

            boolean bl = transactions.stream()

                        .anyMatch((t) -> t.getTrader().getCity().equals("Milan"));

            

            System.out.println(bl);

        }

        

        

        //6. 打印生活在剑桥的交易员的所有交易额

        @Test

        public void test6(){

            Optional<Integer> sum = transactions.stream()

                        .filter((e) -> e.getTrader().getCity().equals("Cambridge"))

                        .map(Transaction::getValue)

                        .reduce(Integer::sum);

            

            System.out.println(sum.get());

        }

        

        

        //7. 所有交易中,最高的交易额是多少

        @Test

        public void test7(){

            Optional<Integer> max = transactions.stream()

                        .map((t) -> t.getValue())

                        .max(Integer::compare);

            

            System.out.println(max.get());

        }

        

        //8. 找到交易额最小的交易

        @Test

        public void test8(){

            Optional<Transaction> op = transactions.stream()

                        .min((t1, t2) -> Integer.compare(t1.getValue(), t2.getValue()));

            

            System.out.println(op.get());

        }

    

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.python并发入门(part5 event对象)

一、引入event。 每个线程&#xff0c;都是一个独立运行的个体&#xff0c;并且每个线程的运行状态是无法预测的。 如果一个程序中有很多个线程&#xff0c;程序的其他线程需要判断某个线程的运行状态&#xff0c;来确定自己下一步要执行哪些操作。 threading模块中的event对象…

[转载] Java 将字符串首字母转为大写 - 利用ASCII码偏移

参考链接&#xff1a; 使用ASCII值检查Java中的字符串是否仅包含字母 将字符串name 转化为首字母大写。普遍的做法是用subString()取第一个字母转成大写再与之后的拼接&#xff1a; str str.substring(0, 1).toUpperCase() str.substring(1); 看到一种效率更高的做法&…

俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长

两天前&#xff08;11月13日&#xff09;&#xff0c;阿里文娱董事长俞永福离职的消息&#xff0c;在互联网圈炸了锅。但很快&#xff0c;俞本人就在微博做了澄清&#xff0c;并称“永远幸福&#xff0c;我不会离开”。然而就在今天&#xff08;11月15日&#xff09;&#xff0…

[转载] java提取字符串中的字母数字

参考链接&#xff1a; 使用Regex检查字符串在Java中是否仅包含字母 String str "adsf adS DFASFSADF阿德斯防守对方asdfsadf37《&#xff1f;&#xff1a;&#xff1f;%#&#xffe5;%#&#xffe5;%#$%#$%^><?1234"; str str.replaceAll("[^a-zA-…

snort的详细配置

前一段一直在做snort入侵检测系统的安装以及配置&#xff0c;看了很多的网上资料&#xff0c;也算是总结了下前辈的经验吧。需要的软件包&#xff1a;1、httpd-2.2.6.tar.gz2、mysql-5.1.22-rc-linux-i686-icc-glibc23.tar.gz3、php-5.2.4.tar.bz24、acid-0.9.6b23.tar.gz5、ad…

[转载] Java:获取数组中的子数组的多种方法

参考链接&#xff1a; Java中的数组Array 我的个人博客&#xff1a;zhang0peter的个人博客 Java&#xff1a;从一个数组中创建子数组 使用Arrays.copyOfRange函数 Arrays.copyOfRange支持&#xff1a;boolean[]&#xff0c; byte[] &#xff0c;char[]&#xff0c;double…

[转载] Java中Array(数组)转List(集合类)的几种方法

参考链接&#xff1a; Java中的数组类Array 1、循环。新建List类&#xff0c;循环填充。 2、利用Arrays类的静态方法asList()。 Arrays.asList(T[])返回Arrays类的一个内部内List(T)&#xff0c;此类继承自AbstractList&#xff0c;不可增删。若想要一个可以增删的List类&am…

Linux查看系统cpu个数、核心书、线程数

Linux查看系统cpu个数、核心书、线程数 现在cpu核心数、线程数越来越高&#xff0c;本文将带你了解如何确定一台服务器有多少个cpu、每个cpu有几个核心、每个核心有几个线程。 查看物理cpu个数 cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 查看核…

[转载] java中数组的反射的探究

参考链接&#xff1a; Java中的反射数组类reflect.Array 数组的反射有什么用呢&#xff1f;何时需要使用数组的反射呢&#xff1f;先来看下下面的代码&#xff1a; Integer[] nums {1, 2, 3, 4}; Object[] objs nums; //这里能自动的将Integer[]转成Object[] Object obj n…

防火墙iptables之常用脚本

防火墙iptables之常用脚本 转自&#xff1a;http://zhujiangtao.blog.51cto.com/6387416/1286490 标签&#xff1a;防火墙 主机 1。不允许别人ping我的主机&#xff0c;但是我可以ping别人的主机 #!/bin/bash iptables -F iptables -X iptables -Z modprobe ip_tables modprobe…

[转载] java中50个关键字以及各自用法大全

参考链接&#xff1a; Java中的默认数组值 关键字和保留字的区别 正确识别java语言的关键字&#xff08;keyword&#xff09;和保留字&#xff08;reserved word&#xff09;是十分重要的。Java的关键字对java的编译器有特殊的意义&#xff0c;他们用来表示一种数据类型&…

NFS 共享存储

服务器客户端yum -y install rpcbind nfs-utils 服务器 vim /etc/exports /data 192.168.10.0/24(rw,sync,no_root_squash) * ro # 只读权限 * rw # 读写权限 * sync # 同步&#xff0c;数据更安全&#xff0c;速度慢 * async #异步&#xff0c;速度快&#xff0c;效率高&a…

[转载] Java中的final变量、final方法和final类

参考链接&#xff1a; Java中的final数组 &#xff5c; Final arrays 1、final变量 final关键字可用于变量声明&#xff0c;一旦该变量被设定&#xff0c;就不可以再改变该变量的值。通常&#xff0c;由final定义的变量为常量。例如&#xff0c;在类中定义PI值&#xff0c;可…

Linux基础篇_01_计算机概论

学习资料&#xff1a;《鸟哥的Linux私房菜&#xff08;基础篇&#xff09;》部分&#xff1a;Linux的规划与安装 时间&#xff1a;20130225 学习笔记&#xff1a;计算机定义&#xff1a;接受使用者输入指令与数据&#xff0c; 经由中央处理器的数学与逻辑单元运算处理后&#x…

[转载] java中的经典问题:传值与传引用

参考链接&#xff1a; 有关Java中数组分配的有趣事实 参数传递的秘密 知道方法参数如何传递吗&#xff1f; 记得刚开始学编程那会儿&#xff0c;老师教导&#xff0c;所谓参数&#xff0c;有形式参数和实际参数之分&#xff0c;参数列表中写的那些东西都叫形式参数&#x…

[3/21]Windows Server 2008时钟方面的改进展示

在Windows Server 2008中的时钟显示和以往Windows Server 2003及以前的版本显示有很大的差别。如果要显示并进行简单的时间修改可以在时钟上双击&#xff0c;会出现如下图所示的界面。在上图中可以调整但无法进行真正的修改&#xff0c;彻底修改需要点击&#xff02;更改日期和…

[转载] 黑马程序员_学习笔记8_C#基础归纳之数组

参考链接&#xff1a; Java中的锯齿数组Jagged array ---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流&#xff01; ---------------------- 什么是数组&#xff1f; 数组是一组数据结构&#xff0c;它可以包含同一类型的多个元素。C#用特殊记号还…

2Python全栈之路系列之MysQl基本数据类型

Python全栈之路系列之MySQL基本数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型&#xff0c;大致可以分为三类&#xff1a; 数字类型 日期和时间类型 字符串类型 数字类型 类型大小用途BIT-二进制TINYINT1字节小整数值INT or INTEGER4字…

[转载] JAVA笔记_(Day04,Day05)函数数组

参考链接&#xff1a; 了解Java中的数组IndexOutofbounds异常 文章目录 函数定义练习误区重载&#xff08;overload&#xff09;重载选择题练习函数的内存调用问题 数组定义数组的内存图解数组的常见问题应用求和最大值将数组转成字符串查表法转十六进制查表版&#xff08;十六…

VDI序曲二 RemotoAPP部署

首先&#xff0c;我们需要准备如下角色&#xff1a;沿用VDI序曲一的2台物理服务器以及角色我们在物理服务器1的hyper-v上&#xff0c;我们利用之前我介绍的“服务器虚拟化之准备母盘VHD”的方法再创建如下虚拟机&#xff1a;WIN-RDAPP&#xff1b;WIN-RDWA&#xff1b;WIN-RDCB…