最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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"); ?

第二種方法(雙括號(hào)初始化法/匿名內(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)部類包含了外圍實(shí)例的引用, 如果擁有比外部類更長的生命周期,

有內(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ù)的直觀方式來提供一種對(duì) Java 集合運(yùn)算和表達(dá)的高階抽象(菜鳥教程)。這里的Stream不同于IO中的stream。

聲明Student對(duì)象

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 過濾器返回還是一個(gè)stream流對(duì)象
?? ??? ?//查詢math成績大于80的學(xué)生并遍歷輸出
?? ??? ?list.stream().filter(e->e.getMath()>80).forEach(System.out::println);//.forEach(e->System.out.println(e))
?? ??? ?//統(tǒng)計(jì)數(shù)量count
?? ??? ?System.out.println(list.stream().count());
?? ??? ?//如統(tǒng)計(jì)總分大于160的人數(shù)
?? ??? ?System.out.println(list.stream().filter(e->e.getEnglish()+e.getMath()>160).count());
?? ??? ?//limit ?取前n個(gè)值
?? ??? ?list.stream().limit(3).forEach(System.out::println);
?? ??? ?//skip 跳過前n個(gè)
?? ??? ?list.stream().skip(2).forEach(System.out::println);
?? ??? ?//distinct 去除重復(fù)數(shù)據(jù)
?? ??? ?list.stream().distinct().forEach(System.out::println);
?? ??? ?//map 映射元素可以對(duì)元素進(jìn)行操作 ? 例如對(duì)每個(gè)學(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());
?? ??? ?});
?? ??? ?//返回第一個(gè)元素 ?
?? ??? ?Optional<Student> first = list.stream().findFirst();
?? ??? ?System.out.println(first.get());
?? ??? ?//返回任意一個(gè)元素
?? ??? ?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 返回元素中第一個(gè)值
?? ??? ?Student student = list.stream().findFirst().get();
?? ??? ?//findAny 返回元素中任意一個(gè)值
?? ??? ?Student student1 = list.stream().findAny().get();
?? ??? ?//max 返回最大值 查詢英語成績最高的學(xué)生
?? ??? ?Student student2 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
?? ??? ?//min 最小值 ?將上面l1,l2位置對(duì)調(diào)
?? ??? ?Student student3 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
?? ??? ?//將流對(duì)象轉(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());
?? ??? ?//對(duì)對(duì)象中的某項(xiàng)進(jìn)行統(tǒng)計(jì)
?? ??? ?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}
?? ?}? ?
}

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

相關(guān)文章

  • 基于SpringBoot核心原理(自動(dòng)配置、事件驅(qū)動(dòng)、Condition)

    基于SpringBoot核心原理(自動(dòng)配置、事件驅(qū)動(dòng)、Condition)

    這篇文章主要介紹了基于SpringBoot核心原理(自動(dòng)配置、事件驅(qū)動(dòng)、Condition),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • springboot使用線程池(ThreadPoolTaskExecutor)示例

    springboot使用線程池(ThreadPoolTaskExecutor)示例

    大家好,本篇文章主要講的是springboot使用線程池(ThreadPoolTaskExecutor)示例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • idea中斷點(diǎn)類型之All和Thread的區(qū)別介紹

    idea中斷點(diǎn)類型之All和Thread的區(qū)別介紹

    使用all模式對(duì)于程序中含有多個(gè)線程來說,會(huì)將多個(gè)線程都阻塞在斷點(diǎn),此時(shí)所有的線程都執(zhí)行到此處,在最后一個(gè)線程執(zhí)行到此處是會(huì)發(fā)生暫停,在這之前的線程會(huì)繼續(xù)執(zhí)行到任意位置,本文給大家詳細(xì)介紹下idea中斷點(diǎn)類型之All和Thread的區(qū)別,感興趣的朋友一起看看吧
    2022-03-03
  • SpringBoot?基于?MongoTemplate?的工具類過程詳解

    SpringBoot?基于?MongoTemplate?的工具類過程詳解

    MongoDB是一個(gè)高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當(dāng)前NoSql數(shù)據(jù)庫中比較熱門的一種,這篇文章主要介紹了SpringBoot基于MongoTemplate的工具類,需要的朋友可以參考下
    2023-09-09
  • java讀取Excel導(dǎo)入去除空行簡單方法

    java讀取Excel導(dǎo)入去除空行簡單方法

    這篇文章主要給大家介紹了關(guān)于java讀取Excel導(dǎo)入去除空行的簡單方法,在日常開發(fā)中,想必都遇到過批處理的需求,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下
    2023-07-07
  • IDEA實(shí)用好用插件推薦及使用方法教程詳解(必看)

    IDEA實(shí)用好用插件推薦及使用方法教程詳解(必看)

    這篇文章主要介紹了IDEA實(shí)用好用插件推薦及使用方法教程,本文通過實(shí)例截圖相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Mybatis使用Collection屬性的示例代碼

    Mybatis使用Collection屬性的示例代碼

    本文主要介紹了Mybatis使用Collection屬性的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • IDEA JavaWeb項(xiàng)目啟動(dòng)運(yùn)行后出現(xiàn)404錯(cuò)誤的解決方法

    IDEA JavaWeb項(xiàng)目啟動(dòng)運(yùn)行后出現(xiàn)404錯(cuò)誤的解決方法

    這篇文章主要介紹了IDEA JavaWeb項(xiàng)目啟動(dòng)運(yùn)行后出現(xiàn)404錯(cuò)誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • SpringMVC和Ajax的交互詳解(手工處理)

    SpringMVC和Ajax的交互詳解(手工處理)

    Ajax即異步的?JavaScript和XML,是一種無需重新加載整個(gè)網(wǎng)頁的情況下,能夠更新部分模塊的網(wǎng)頁技術(shù),下面這篇文章主要給大家介紹了關(guān)于SpringMVC和Ajax交互的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 詳解SpringMVC中的日期處理和文件上傳操作

    詳解SpringMVC中的日期處理和文件上傳操作

    這篇文章主要為大家詳細(xì)介紹了SpringMVC中的日期處理和文件上傳操作方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定借鑒價(jià)值,需要的可以參考一下
    2022-08-08

最新評(píng)論

兴化市| 沿河| 连江县| 宁国市| 台中县| 五常市| 甘谷县| 夏津县| 日喀则市| 闽侯县| 鲁甸县| 澎湖县| 河北区| 柯坪县| 新蔡县| 叶城县| 南木林县| 桑日县| 河北区| 陇西县| 永靖县| 阳朔县| 紫金县| 岳阳市| 江川县| 江阴市| 长兴县| 肥乡县| 仁化县| 平舆县| 武平县| 伊通| 紫阳县| 尼勒克县| 茶陵县| 清河县| 衡阳县| 博客| 峨眉山市| 临武县| 昂仁县|