[轉載] 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.pswp.cn/news/540192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540192.shtml
英文地址,請注明出處:http://en.pswp.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…