欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于List、Map、Stream初始化方式

 更新時間:2022年08月23日 08:30:50   作者:HeroSongZ  
這篇文章主要介紹了關(guān)于List、Map、Stream初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

List、Map、Stream初始化

第一種方法

? ? ?初始化List
? ? ?List<string> list = new ArrayList<string><string>(); ?
? ? ?list.add("string1"); ?
? ? ?list.add("string2"); ?
? ? ?list.add("stringN"); ?
? ??
? ? ?初始化Map
? ? ?Map</String , Object> map = new HashMap</String , Object>(); ?
? ? ?map.put("key1", "value1"); ?
? ? ?map.put("key2", "value2"); ?
? ? ?map.put("keyN", "valueN"); ?

第二種方法(雙括號初始化法/匿名內(nèi)部類)

? ? ?初始化List ??
? ? ?List<string> list = new ArrayList<string>(){{ ?
? ? ?add("string1"); ?
? ? ?add("string2"); ?
? ? ?add("stringN"); ? ?}}; ?
? ? ?
? ? ?初始化Map ? ?
? ? ?Map</String , String> map = new HashMap</String , Object>(){{ ?
? ? ?put("keyOne", "valueOne"); ?
? ? ?put("keyTwo", "valueTwo"); ?
? ? ?put("keyThree", "valueThree"); ??
? ? ?}};

慎用, 非靜態(tài)內(nèi)部類/ 匿名內(nèi)部類包含了外圍實例的引用, 如果擁有比外部類更長的生命周期,

有內(nèi)存泄露隱患

stream初始化

? ? ?Map map = Stream.of(1,2,3,4).collect(
? ? ?Collectors.toMap(x -> x, integer -> integer,(key, value) -> value, HashMap::new));
? ? ?System.out.println(JSONObject.toJSONString(map));
? ??
? ? ?List list = Stream.of(1,2,3,4).collect(Collectors.toList());
? ? ?System.out.println(JSONObject.toJSONString(list));

利用Array與ArrayList的相互轉(zhuǎn)換方法初始化ArrayList,代碼如下:

ArrayList<String> list = new ArrayList(Arrays.asList("banana", "milk", "bacon")); ?

List Stream 常用方法

Stream 使用一種類似用 SQL 語句從數(shù)據(jù)庫查詢數(shù)據(jù)的直觀方式來提供一種對 Java 集合運算和表達的高階抽象(菜鳥教程)。這里的Stream不同于IO中的stream。

聲明Student對象

public class Student {
?? ?private String name;
?? ?private Integer age;
?? ?private Integer math;
?? ?private Integer english;
?? ?//get set
?? ?public Student(String name, Integer age, Integer math, Integer english) {
?? ??? ?super();
?? ??? ?this.name = name;
?? ??? ?this.age = age;
?? ??? ?this.math = math;
?? ??? ?this.english = english;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return "Student [name=" + name + ", age=" + age + ", math=" + math + ", english=" + english + "]";
?? ?}
}

Stream一些常用的API 

public class StreamDemo {
?? ?List<Student> list = null;
? ? //初始化數(shù)據(jù)
?? ?@Before
?? ?public void beforetest() {
?? ??? ?list = Arrays.asList(new Student("Tom", 18, 88, 90), new Student("Jerry", 20, 77, 89),
?? ??? ??? ??? ?new Student("Lily", 17, 98, 79), new Student("Lucy", 19, 70, 80), new Student("LiLei", 18, 88, 90),
?? ??? ??? ??? ?new Student("HanMeiMei", 21, 87, 79));
?? ?}?
?? ?
?? ?@Test
?? ?public void streamtest() {
?? ??? ?// filter 過濾器返回還是一個stream流對象
?? ??? ?//查詢math成績大于80的學(xué)生并遍歷輸出
?? ??? ?list.stream().filter(e->e.getMath()>80).forEach(System.out::println);//.forEach(e->System.out.println(e))
?? ??? ?//統(tǒng)計數(shù)量count
?? ??? ?System.out.println(list.stream().count());
?? ??? ?//如統(tǒng)計總分大于160的人數(shù)
?? ??? ?System.out.println(list.stream().filter(e->e.getEnglish()+e.getMath()>160).count());
?? ??? ?//limit ?取前n個值
?? ??? ?list.stream().limit(3).forEach(System.out::println);
?? ??? ?//skip 跳過前n個
?? ??? ?list.stream().skip(2).forEach(System.out::println);
?? ??? ?//distinct 去除重復(fù)數(shù)據(jù)
?? ??? ?list.stream().distinct().forEach(System.out::println);
?? ??? ?//map 映射元素可以對元素進行操作 ? 例如對每個學(xué)生年齡加1
?? ??? ?list.stream().map(e->{
?? ??? ??? ?e.setAge(e.getAge()+1);
?? ??? ??? ?return e;
?? ??? ?}).forEach(System.out::println);
?? ??? ?//sorted 排序?
?? ??? ?//升序
?? ??? ?list.stream().sorted((a,b)->{
?? ??? ??? ?return a.getEnglish().compareTo(b.getEnglish());
?? ??? ?});
?? ??? ?//降序
?? ??? ?list.stream().sorted((a,b)->{
?? ??? ??? ?return b.getEnglish().compareTo(a.getEnglish());
?? ??? ?});
?? ??? ?//返回第一個元素 ?
?? ??? ?Optional<Student> first = list.stream().findFirst();
?? ??? ?System.out.println(first.get());
?? ??? ?//返回任意一個元素
?? ??? ?System.out.println(list.stream().findAny().get());
?? ??? ?//anyMatch 是否匹配任意一元素 ?檢查是否包含名字為Tom的
?? ??? ?System.out.println(list.stream().anyMatch(e->e.getName().equals("Tom")));
?? ??? ?//allMatch 是否匹配所有元素
?? ??? ?System.out.println(list.stream().allMatch(e->e.getName().equals("Tom")));
?? ??? ?//noneMatch ?是否未匹配所有元素
?? ??? ?System.out.println(list.stream().noneMatch(e->e.getName().equals("Tom")));
?? ??? ?//findFirst 返回元素中第一個值
?? ??? ?Student student = list.stream().findFirst().get();
?? ??? ?//findAny 返回元素中任意一個值
?? ??? ?Student student1 = list.stream().findAny().get();
?? ??? ?//max 返回最大值 查詢英語成績最高的學(xué)生
?? ??? ?Student student2 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
?? ??? ?//min 最小值 ?將上面l1,l2位置對調(diào)
?? ??? ?Student student3 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
?? ??? ?//將流對象轉(zhuǎn)為list?
?? ??? ?list.stream().filter(e->e.getMath()>80).collect(Collectors.toList());
?? ??? ?//將流轉(zhuǎn)未set
?? ??? ?list.stream().filter(e->e.getMath()>80).collect(Collectors.toSet());
?? ??? ?//對對象中的某項進行統(tǒng)計
?? ??? ?IntSummaryStatistics c = list.stream().collect(Collectors.summarizingInt(Student::getEnglish));
?? ??? ?System.out.println(c);//IntSummaryStatistics{count=6, sum=507, min=79, average=84.500000, max=90}
?? ?}? ?
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java微信公眾平臺開發(fā)(15) 微信JSSDK的使用

    Java微信公眾平臺開發(fā)(15) 微信JSSDK的使用

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺開發(fā)第十五步,微信JSSDK的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • springMVC配置環(huán)境實現(xiàn)文件上傳和下載

    springMVC配置環(huán)境實現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細(xì)介紹了springMVC配置環(huán)境實現(xiàn)文件上傳和下載的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java類的繼承實例詳解(動力節(jié)點Java學(xué)院整理)

    Java類的繼承實例詳解(動力節(jié)點Java學(xué)院整理)

    在Java開發(fā)中,我們常常用到繼承這一概念,可以說繼承是Java這類面向?qū)ο缶幊陶Z言的基石,今天小編一起和大家一起學(xué)習(xí)java類的繼承
    2017-04-04
  • Mybatis接口式編程的原理

    Mybatis接口式編程的原理

    mybatis有兩種實現(xiàn)方式,一種可以通過xml配置文件實現(xiàn),其二是面向接口編程的實現(xiàn)。本文重點給大家介紹mybatis接口編程的原理,需要的的朋友參考下
    2017-03-03
  • JAVA十大排序算法之歸并排序詳解

    JAVA十大排序算法之歸并排序詳解

    這篇文章主要介紹了java中的歸并排序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • java利用時間格式生成唯一文件名的方法

    java利用時間格式生成唯一文件名的方法

    這篇文章主要介紹了java利用時間格式生成唯一文件名的方法,需要的朋友可以參考下
    2017-01-01
  • Java中Arrays工具類的一些常見方法總結(jié)

    Java中Arrays工具類的一些常見方法總結(jié)

    在Java中Arrays類是一個實用工具類,用于在數(shù)組上執(zhí)行各種操作,包括排序、搜索、比較等,這篇文章主要給大家介紹了關(guān)于Java中Arrays工具類的一些常見方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • java線程的基礎(chǔ)實例解析

    java線程的基礎(chǔ)實例解析

    這篇文章主要介紹了java線程的基礎(chǔ)實例解析,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • Mybatis步驟分解實現(xiàn)一個增刪改查程序

    Mybatis步驟分解實現(xiàn)一個增刪改查程序

    MybatisPlus是國產(chǎn)的第三方插件, 它封裝了許多常用的CURDapi,免去了我們寫mapper.xml的重復(fù)勞動。本文將整合MybatisPlus實現(xiàn)增刪改查功能,感興趣的可以了解一下
    2022-05-05
  • java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析

    java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析

    這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer的底層原理及源碼解析,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進步早日升職加薪
    2022-03-03

最新評論