Web前端最新Java基础-Stream流_entryset,面试必备

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

    //method3();

    //同种数据类型的多个数据
    //method4();

}

private static void method4() {
    Stream.of(1,2,3,4,5,6,7,8).forEach(s-> System.out.println(s));
}

private static void method3() {
    int [] arr = {1,2,3,4,5};
    Arrays.stream(arr).forEach(s-> System.out.println(s));
}

private static void method2() {
    HashMap<String,Integer> hm = new HashMap<>();
    hm.put("zhangsan",23);
    hm.put("lisi",24);
    hm.put("wangwu",25);
    hm.put("zhaoliu",26);
    hm.put("qianqi",27);

    //双列集合不能直接获取Stream流
    //keySet
    //先获取到所有的键
    //再把这个Set集合中所有的键放到Stream流中
    //hm.keySet().stream().forEach(s-> System.out.println(s));
    
    //entrySet
    //先获取到所有的键值对对象
    //再把这个Set集合中所有的键值对对象放到Stream流中
    hm.entrySet().stream().forEach(s-> System.out.println(s));
}

private static void method1() {
    ArrayList<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");

// Stream stream = list.stream();
// stream.forEach(s-> System.out.println(s));
list.stream().forEach(s-> System.out.println(s));
}
}


### 3、Stream流的常见的中间方法


![在这里插入图片描述](https://img-blog.csdnimg.cn/67b445d69536468a8b54be11ec7ac83f.png)



public class MyStream3 {
public static void main(String[] args) {
// Stream filter​(Predicate predicate):过滤
// Predicate接口中的方法 boolean test​(T t):对给定的参数进行判断,返回一个布尔值

    ArrayList<String> list = new ArrayList<>();
    list.add("张三丰");
    list.add("张无忌");
    list.add("张翠山");
    list.add("王二麻子");
    list.add("张良");
    list.add("谢广坤");

    //filter方法获取流中的 每一个数据.
    //而test方法中的s,就依次表示流中的每一个数据.
    //我们只要在test方法中对s进行判断就可以了.
    //如果判断的结果为true,则当前的数据留下
    //如果判断的结果为false,则当前数据就不要.

// list.stream().filter(
// new Predicate() {
// @Override
// public boolean test(String s) {
// boolean result = s.startsWith(“张”);
// return result;
// }
// }
// ).forEach(s-> System.out.println(s));

    //因为Predicate接口中只有一个抽象方法test
    //所以我们可以使用lambda表达式来简化

// list.stream().filter(
// (String s)->{
// boolean result = s.startsWith(“张”);
// return result;
// }
// ).forEach(s-> System.out.println(s));

    list.stream().filter(s ->s.startsWith("张")).forEach(s-> System.out.println(s));
}

}


**其他的中间操作方法**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/62efe87f10474bf883e6d0482fa727d7.png)



public class MyStream4 {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add(“张三丰”);
list.add(“张无忌”);
list.add(“张翠山”);
list.add(“王二麻子”);
list.add(“张良”);
list.add(“谢广坤”);
list.add(“谢广坤”);
list.add(“谢广坤”);
list.add(“谢广坤”);
list.add(“谢广坤”);

    //method1(list);
    //method2(list);
    //method3();
    //method4(list);

}

private static void method4(ArrayList<String> list) {
    // Stream<T> distinct​():去除流中重复的元素。依赖(hashCode和equals方法)
    list.stream().distinct().forEach(s-> System.out.println(s));
}

private static void method3() {
    //static <T> Stream<T> concat​(Stream a, Stream b):合并a和b两个流为一个流
    ArrayList<String> list = new ArrayList<>();
    list.add("张三丰");
    list.add("张无忌");
    list.add("张翠山");
    list.add("王二麻子");
    list.add("张良");
    list.add("谢广坤");
    list.add("谢广坤");
    list.add("谢广坤");
    list.add("谢广坤");
    list.add("谢广坤");

    ArrayList<String> list2 = new ArrayList<>();
    list2.add("张三丰");
    list2.add("张无忌");
    list2.add("张翠山");
    list2.add("王二麻子");
    list2.add("张良");
    list2.add("谢广坤");

// Stream stream1 = list.stream();
// Stream stream2 = list2.stream();
//
// Stream stream3 = Stream.concat(stream1, stream2);
// stream3.forEach(s-> System.out.println(s));

    Stream.concat(list.stream(),list2.stream()).forEach(s-> System.out.println(s));//合并输出
}

private static void method2(ArrayList<String> list) {
    // Stream<T> skip​(long n):跳过指定参数个数的数据
    list.stream().skip(2).forEach(s-> System.out.println(s));//跳过前面两个
}

private static void method1(ArrayList<String> list) {
    // Stream<T> limit​(long maxSize):截取指定参数个数的数据
    list.stream().limit(2).forEach(s-> System.out.println(s));//保留前面两个
}

}


### 4、Stream流终结方法


![在这里插入图片描述](https://img-blog.csdnimg.cn/c7a8ef06b5214bd5ae9c7829bf398f76.png)



/**
* Stream流的终结方法
*/
public class MyStream5 {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add(“张三丰”);
list.add(“张无忌”);
list.add(“张翠山”);
list.add(“王二麻子”);
list.add(“张良”);
list.add(“谢广坤”);

    //method1(list);

// long count​():返回此流中的元素数
long count = list.stream().count();
System.out.println(count);

}

private static void method1(ArrayList<String> list) {
    // void forEach​(Consumer action):对此流的每个元素执行操作

// Consumer接口中的方法 void accept​(T t):对给定的参数执行此操作
//在forEach方法的底层,会循环获取到流中的每一个数据.
//并循环调用accept方法,并把每一个数据传递给accept方法
//s就依次表示了流中的每一个数据.
//所以,我们只要在accept方法中,写上处理的业务逻辑就可以了.
list.stream().forEach(
new Consumer() {
@Override
public void accept(String s) {
System.out.println(s);
}
}
);
//forEach方法的形参是一个接口,那么传递给它的一定是接口的实现类对象,在这
//里先写一个匿名内部类,这个匿名内部类就是接口的实现类对象

    System.out.println("====================");

    //lambda表达式的简化格式 (与形参保持一致数据类型与流中保持一致)->{}
    //是因为Consumer接口中,只有一个accept方法
    list.stream().forEach(
            (String s)->{
                System.out.println(s);
            }
    );
    System.out.println("====================");

    //lambda表达式还是可以进一步简化的.
    // 形参只有一个类型可以简化小括号可以简化
    list.stream().forEach(s->System.out.println(s));
}

}


### 5、在Stream流中无法直接修改集合,数组等数据源中的数据


![在这里插入图片描述](https://img-blog.csdnimg.cn/86d6c21f95fe41999baab031c2c9e380.png)



/**
* Stream流的收集方法
* 练习:
* 定义一个集合,并添加一些整数1,2,3,4,5,6,7,8,9,10
* 将集合中的奇数删除,只保留偶数。
* 遍历集合得到2,4,6,8,10。
*/
public class MyStream6 {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
//List.of批量添加太麻烦用遍历
for (int i = 1; i <= 10; i++) {
list.add(i);
}

// list.stream().filter(
// (Integer i)->{
// return i % 2 == 0;
// }
// )
list.stream().filter(number -> number % 2 == 0).forEach(number -> System.out.println(number));
System.out.println(“====================”);

    for (Integer integer : list) {
        System.out.println(integer);
    }


}

}


![在这里插入图片描述](https://img-blog.csdnimg.cn/5409a644f5324b0ca601874609b7aff4.png)


### 6、Stream流的收集操作


![在这里插入图片描述](https://img-blog.csdnimg.cn/84121fbc4b16482484631820e2724c4d.png)



/**
* Stream流的收集方法
* 练习:
* 定义一个集合,并添加一些整数1,2,3,4,5,6,7,8,9,10
* 将集合中的奇数删除,只保留偶数。
* 遍历集合得到2,4,6,8,10。
*/
public class MyStream7 {
public static void main(String[] args) {
ArrayList list1 = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list1.add(i);
}

    list1.add(10);
    list1.add(10);
    list1.add(10);
    list1.add(10);

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端学习书籍导图-1

d(10);

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-kyail5nd-1715907453944)]

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值