Java8stream处理List交集差集去重等
Java8的新特性Stream常用于处理集合,它不会改变集合原有的结构,优点是Stream的代码会比用for循环处理简洁不少
本文主要说的是:获取两个List集合的交集、差集、去重以及list。stream()构造方法一、两个集合的交集
例如:找出两个班名字相同的学生publicclassStudent{privateStringstudentNo;名字privateStringstudentName;publicStudent(StringstudentNo,StringstudentName){this。studentNostudentNo;this。studentNamestudentName;}对象的比较涉及到equals()的重写,这里仅仅比较studentName是否相同Overridepublicbooleanequals(Objecto){if(thiso)returntrue;if(!(oinstanceofStudent))returnfalse;Studentstudent(Student)o;returnstudentName。equals(student。getStudentName());}set()和get()方法均省略。。}
学生是个对象实例,我们要比较的是名字是否相同,仅需要重写equals()方法即可找交集Testpublicvoidtest(){1班的学生ListStudentclass01newArrayList();class01。add(newStudent(1,小明));class01。add(newStudent(2,赵铁柱));2班的学生ListStudentclass02newArrayList();class02。add(newStudent(1,赵铁柱));找两个班名字相同的同学(取交集),比较用的是重写的equals()ListStudentsameNameclass01。stream()。filter(class02::contains)。collect(Collectors。toList());sameName。stream()。forEach(studentSystem。out。println(student。getStudentName()));output:赵铁柱}
需要注意的是:class01。stream()。filter(class02::contains)的filter()会保留符合表达式的结果,这里面表达式的内容是2班和1班名字相同的同学forEach是遍历集合,代替了for循环,代码更为简洁collect(Collectors。toList())、collect(Collectors。toSet())、collect(Collectors。toMap())将Stream的数据归集到List、Map、Set等集合二、差集
输出结果:bcTestpublicvoidtest(){ListStringlist01Arrays。asList(a,b,c);ListStringlist02Arrays。asList(a,e,f);list01和list02的差集,仅保留了b,cListStringresultlist01。stream()。filter(word!list02。contains(word))。collect(Collectors。toList());result。stream()。forEach(wordSystem。out。print(word));}
表达式list01。stream()。filter(word!list02。contains(word)),要找的元素,它的特征是只存在list01中,但不存在list02中,!list02。contains(word)就是说这个元素不在list02中三、去重
输出结果:abcListStringlistArrays。asList(a,b,c,a);ListStringdistinctlist。stream()。distinct()。collect(Collectors。toList());distinct。stream()。forEach(wordSystem。out。print(word));
删除了重复的字符a四、list。stream()构造方法
可能有朋友对list。stream()有些疑惑,它是个Stream的构造方法,Stream的构造方法如下:用集合创建StreamListlistArrays。asList(a,b,c);
创建顺序流
Streamstreamlist。stream();
创建并行流
StreamparallelStreamlist。parallelStream();li用数组Arrays。stream(array)创建Streamint〔〕array{1,2,3,4,5};
IntStreamstreamArrays。stream(array);用Streamof(T。。。values)创建StreamStreamstreamStream。of(1,2,3,4,5);ol
常用的是上面这三种,另外还有iterate(),generate(),后者是生成随机数,两个构造方法均产生无限流(即元素的个数是无限的)。
如果要求数量有限,则需要用limit来限制,如:StreamIntegerstreamStream。iterate(0,numnum3)。limit(10)
打印了〔0,3,6,9,12,15,18,21,24,27〕
王力宏为什么选择李靓蕾人家在细节上的作为,理解王力宏是美籍华人,从小在国外长大,作为音乐歌手的他所接受的流行元素和国内的听众有观念上的些许出入,所以最开始的时候,他回国发展不是很顺利,后来找到了折中的办法以后才收获到大量的……
全新升级力作南卡Runnerccll强势来袭前言:南卡耳机是深圳市梦趣生活科技有限公司旗下的耳机,是目前国内成长最快的耳机产品之一,2019年,南卡骨传导耳机荣获深圳礼物大奖,成为引领骨传导耳机行业的标杆。小……
京东电脑数码大势新品赏一站式解锁潮流趋势新品当生活一成不变时,你会如何应对?不如来点新的变化!近日,京东电脑数码联手京东小魔方为年轻人打造了一场大势新品赏,推出高性能轻薄本、家用投影仪、降噪耳机、运动相机、学习机等各类趋……
李湘在什么平台直播只要给钱是什么都卖李湘最喜欢的应该是奢侈品,只要是这个东西很好,够贵,那么李湘的眼神中就是钱财,也是有很多人在跟随了李湘,不过网友想要知道李湘究竟是在什么平台中直播呢?这个事情也是能够简单的说明……
吴诗卉三口七肛女生被拿下的速度有多快吴诗卉和三口七肛是两回事。吴诗卉是一个非常漂亮独立的女孩子,2014年11月15日下午3点失踪,之后家人报案,经常经过20多个小时的侦查破案。吴诗卉被人劫财杀人,羊入虎口可想在……
张亚东有多少个女人那么多女神都喜欢他的原因表面上是大家公认的音乐才子,实际上却是娱乐圈的女神收割机,这个人其实就是张亚东了,大多数人听到这个名字都是和圈内的女明星扯上关系,一知半解的完全不清楚张亚东有过多少个女人?等到……
安妮海瑟薇粉乳爱情与灵药身材一级棒网友们的福利安妮海瑟薇是美国一位著名的女演员。是一个十分性感的女演员。在安妮海瑟薇早期的作品中几乎很少有露点的镜头,但是自从《断背山》之后,安妮海瑟薇似乎戏路也开始发生了转变。开始接拍一些……
皮几万抱李小璐去厕所出轨细节被说的那么虚假皮几万和李小璐之间的事情确实是被实锤了,这个事情是让很多人不能够接受,在这样的一个状态中,好多人都在说什么皮几万抱李小璐去厕所相处的细节,这些其实没有被曝光,只是为了自己的热度……
湖南卫视主持人刘烨老公是谁,与圈外老公低调结婚生子说起刘烨可能很多朋友会想到男演员刘烨,其实今天我们要为大家介绍的刘烨是位湖南卫视的女主持人,刘烨自从出道以来不仅在主持的舞台上展现自己的风采,而且近几年更是在多部影视剧中也有着……
胡66是谁真名叫什么,抖音胡66个人资料简介胡66凭借着歌曲《浪人琵琶》进入大众的视线中,相信喜欢音乐或者经常玩抖音、快手的网友们,大家对于胡66应该都不会感觉到陌生,因为之前胡66凭借着代表作歌曲《空空如也》获得了大众……
盆栽牡丹花如何养护才不能烂根?根据牡丹花的生长属性,当土壤不够疏松和优质的时候,就会影响到根茎的生长,从而导致枝干枯黄,严重的时候出现土壤板结和积水,就会导致根茎腐烂,根茎是吸收营养的主要命脉。可使用……
演员王翌舟多大年龄,王翌舟个人资料简介有着模特以及演员身份的王翌舟虽然已经活跃于演艺圈多年,但是至今也没有获得太高的关注度,不过大家对于王翌舟的喜爱并没有因此减少,相反通过王翌舟在一些影视剧当中的表现备受关注,下面……