亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(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í)例的引用, 如果擁有比外部類更長(zhǎng)的生命周期,

有內(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 語(yǔ)句從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)的直觀方式來(lái)提供一種對(duì) Java 集合運(yùn)算和表達(dá)的高階抽象(菜鳥(niǎo)教程)。這里的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 過(guò)濾器返回還是一個(gè)stream流對(duì)象
?? ??? ?//查詢math成績(jī)大于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 跳過(guò)前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 是否匹配任意一元素 ?檢查是否包含名字為T(mén)om的
?? ??? ?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 返回最大值 查詢英語(yǔ)成績(jī)最高的學(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)文章

最新評(píng)論