首页 > 编程语言 >学习Java8中StreamAPI的笔记

学习Java8中StreamAPI的笔记

时间:2024-01-24 23:57:26浏览次数:25  
标签:HashMap ArrayList 笔记 strings public add new StreamAPI Java8

本次笔记记录一下我自己学习Stream流的一个情况。

第一种:使用Stream流来代替增强for循环进行赋值:
这是使用增强for循环的写法:

public static void main(String[] args) {

ArrayList<String> strings = new ArrayList<>();
strings.add("张三");
strings.add("李四");
strings.add("王五");

strings.stream().forEach(System.out::println);

}

 

执行结果为:

 

 

第三个,使用Filter来进行简单的过滤

public class demmo {
public static void main(String[] args) {

ArrayList<String> strings = new ArrayList<>();
strings.add("张三");
strings.add("李四");
strings.add("王五");
strings.add("王二麻子");

strings.stream().filter(string->!string.equals("张三")).forEach(System.out::println);

}
}


执行结果为:

 


第三种:使用Stream流的filte和noneMatch来过实现滤多组数据的值(把两组List一个当作条件一个当作结果,A组里面含有B的(map结构是为了模拟实际业务中 key:value的情况,可以进行替换成为需要的数据)),实现复杂数据的对比。

public class demmo {
public static void main(String[] args) {
List<Map<String, String>> list1 = new ArrayList<>();

HashMap<String, String> stringStringHashMap1 = new HashMap<>();
stringStringHashMap1.put("name", "张三");
list1.add(stringStringHashMap1);

HashMap<String, String> stringStringHashMap2 = new HashMap<>();
stringStringHashMap2.put("name", "王五");
list1.add(stringStringHashMap2);

List<Map<String, String>> list2 = new ArrayList<>();

HashMap<String, String> stringStringHashMap3 = new HashMap<>();
stringStringHashMap3.put("name", "张三");
list2.add(stringStringHashMap3);

List<Map<String,String>>newList=
list1.stream().filter(map->list2.stream().noneMatch(obj->obj.get("name").equals(map.get("name")))).collect(Collectors.toList());
for (Map<String, String> ssmap : newList){
System.out.println(ssmap);
}
}
}

 

 

执行结果为

 


去除了张三这个相同的值,只有王五这个值,这个还能继续扩展,自己发挥吧。

第四种,使用Stream流来进行截取,选择一串数据的前几个来进行显示。

public class demmo {
public static void main(String[] args) {

ArrayList<String> strings = new ArrayList<>();
strings.add("张三");
strings.add("李四");
strings.add("王五");
strings.add("王二麻子");

strings.stream().limit(2).forEach(System.out::println);

}
}

 

执行结果为:

 

标签:HashMap,ArrayList,笔记,strings,public,add,new,StreamAPI,Java8
From: https://www.cnblogs.com/brolab/p/17986163

相关文章

  • 学习笔记-24.1.24
    switch(v.getId()){caseR.id.eye1:if(hide){hide=false;eye1.setImageResource(R.drawable.baseline_remove_red_eye_24);//可见样貌......
  • 安卓家庭记账本开发笔记1
    项目目的:开发一个简单的记账本app开发进度:在idea程序中创建一个空项目,绘制家庭记账本的主界面。创建空项目的步骤之后会整理单独发一篇博客。下面是绘制主界面的代码:<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.co......
  • 大三寒假学习进度笔记15
    今日整理了一下本次项目中使用到的技术 首先数字人方面主要使用到的是辅助神经场(nerf)算法,有关此算法的具体讲解辐射神经场算法——NeRF算法详解-CSDN博客之后是NLP,NLP的全称是NatuarlLanguageProcessing,中文意思是自然语言处理,是人工智能领域的一个重要方向自然语言处理(NL......
  • 【笔记】莫比乌斯反演
    0约定\([n]=[1,n]\cap\mathttZ\)1数论分块形如$S(n)=\sum\limits_{i=1}^nf(i)g(\left\lfloor\dfrac{n}{i}\right\rfloor)$。可以在\(O(\sqrtn)\)的时间复杂度内求解。1.1解法对于\(1\lei\le\sqrtn\),显然,\(i\)最多\(\sqrtn\)种取值,故而\(\left\l......
  • CV 基础知识学习笔记
    简略记录一下一些基本的CV的知识参考:https://www.bilibili.com/video/BV1q7411T7Y6/输出层计算公式:\(out_{size}=(in_{size}-F_{size}+2P)/S+1\)\(in_{size}\)为输入长度\(F_{size}\)为权重矩阵长度,减掉意义为去掉第一个矩阵长度。\(P\)为padding,即填充长......
  • 2024/1/24 算法笔记
    1.快速幂模板虽然前面可能写过了,但是遇到了就再贴一下。LLqmi(LLa,LLk,LLp){LLres=1%p;while(k){if(k&1)res=res*a%p;a=a*a%p;k=k>>1;}returnres;}2.最大子段和给一个数组,求其中元素总和最大......
  • 【文化课学习笔记】【物理】平衡力学
    【物理】平衡力学重力大小:\(G=m\mathrm{g}\);方向:竖直向下;\(\mathrm{g}\):不是定值,与高度和纬度有关;高度越高,\(\mathrm{g}\)越小;纬度越高,\(\mathrm{g}\)越大。重心:测量方法:悬挂法。规则图形的重心在几何中心。误区:重心不一定在物体上。注意事项:一个装满水的气球下方开......
  • 数论——Pollard-Rho 学习笔记
    数论——Pollard-Rho学习笔记非平凡因数:\(n\)除了\(1\)和\(n\)以外的因数。Pollard-Rho算法是一种用于快速分解非平凡因数的算法。Pollard-Rho能在期望复杂度\(\mathcalO(n^{1/4})\)的时间内找到\(n\)的最小的非平凡因数。而根据Pollard-Rho,我们可以用来加速质......
  • NOI Linux 系统使用的笔记
    我为什么现在才会用啊。不知道是谁去年THUSC时不会用,导致用代码没法编译运行。终端的指令首先,几个常用的编译指令,在终端(Terminal)里使用。编译指令ls(list),会列出当前所在文件夹的所有子文件夹。cdname,访问子文件夹特别的,返回到上级目录夹用以下指令:cd..编辑器接下......
  • 微雪ESP32-S3-Zreo学习笔记之USB串口
    软件下载ESP32-S3-Zero没有板载USB转串口,无法实现自动下载。下载软件时要按住Boot按键再上电,此时电脑会识别到一个USB模拟的COM口,可用于下载软件。开发环境编程环境是使用的esp-idf-4.4.2;值得注意的是在此之前安装了esp-idf-5.0.2、esp-idf-5.1.2都不能正常使用,安装好后使......