2024年最全Java基础-Stream流_entryset(2),2024年最新2024前端最新大厂面试真题总结

自学几个月前端,为什么感觉什么都没学到??


这种现象在很多的初学者和自学前端的同学中是比较的常见的。

因为自学走的弯路是比较的多的,会踩很多的坑,学习的过程中是比较的迷茫的。

最重要的是,在学习的过程中,不知道每个部分该学哪些知识点,学到什么程度才算好,学了能做什么。

很多自学的朋友往往都是自己去找资料学习的,资料上有的或许就学到了,资料上没有的或许就没有学到。

这就会给人一个错误的信息就是,我把资料上的学完了,估计也-就差不多的了。

但是真的是这样的吗?非也,因为很多人找的资料就是很基础的。学完了也就是掌握一点基础的东西。分享给你一份前端分析路线,你可以参考。

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

还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。

所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。

    ArrayList<String> list2 = new ArrayList<>();
    for (String s : list1) {
        if(s.startsWith("张")){
            list2.add(s);
        }
    }

    //遍历list2集合,把其中长度为3的元素,再添加到list3中。
    ArrayList<String> list3 = new ArrayList<>();
    for (String s : list2) {
        if(s.length() == 3){
            list3.add(s);
        }
    }
    for (String s : list3) {
        System.out.println(s);
    }
    System.out.println("=======================");
   //Stream流
    list1.stream().filter(s->s.startsWith("张"))
            .filter(s->s.length() == 3)
            .forEach(s-> System.out.println(s));
}

}


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


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


### 2、Stream流获取方法


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



> 
> Stream流的获取 单列集合 : 集合对象.stream(); 双列集合 : 不能直接获取,需要间接获取  
>  集合对象.keySet().stream();  
>  集合对象.entrySet().stream(); 数组 :  
>  Arrays.stream(数组名);
> 
> 
> 同种数据类型的多个数据:
> 
> 
> 
> ```
>         Stream.of(数据1,数据2,数据3......);
> 
> ```
> 
> 



public class MyStream2 {
public static void main(String[] args) {
//单列集合
//method1();//ctrl+alt+m抽取方法快捷键

    //双列集合
    //method2();

    //数组
    //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));
}

}

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值