Giraffe

恕我直言你可能真的不会java第4篇:Stream管道流Map操作

末鹿安然 提交于 2020-08-16 07:19:49
一、回顾Stream管道流map的基础用法 最简单的需求:将集合中的每一个字符串,全部转换成大写! List<String> alpha = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur"); //不使用Stream管道流 List<String> alphaUpper = new ArrayList<>(); for (String s : alpha) { alphaUpper.add(s.toUpperCase()); } System.out.println(alphaUpper); //[MONKEY, LION, GIRAFFE, LEMUR] // 使用Stream管道流 List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList()); //上面使用了方法引用,和下面的lambda表达式语法效果是一样的 //List<String> collect = alpha.stream().map(s -> s.toUpperCase()).collect(Collectors.toList()); System.out.println(collect); //[MONKEY, LION, GIRAFFE

恕我直言你可能真的不会java第5篇:Stream的状态与并行操作

大城市里の小女人 提交于 2020-08-05 22:40:36
一、回顾Stream管道流操作 通过前面章节的学习,我们应该明白了Stream管道流的基本操作。我们来回顾一下: 源操作:可以将数组、集合类、行文本文件转换成管道流Stream进行数据处理 中间操作:对Stream流中的数据进行处理,比如:过滤、数据转换等等 终端操作:作用就是将Stream管道流转换为其他的数据类型。这部分我们还没有讲,我们后面章节再介绍。 看下面的脑图,可以有更清晰的理解: 二、中间操作:有状态与无状态 其实在程序员编程中,经常会接触到“有状态”,“无状态”,绝大部分的人都比较蒙。而且在不同的场景下,“状态”这个词的含义似乎有所不同。但是“万变不离其宗”,理解“状态”这个词在编程领域的含义,笔者教给大家几个关键点: 状态通常代表公用数据,有状态就是有“公用数据” 因为有公用的数据,状态通常需要额外的存储。 状态通常被多人、多用户、多线程、多次操作,这就涉及到状态的管理及变更操作。 是不是更蒙了?举个例子,你就明白了 web开发session就是一种状态,访问者的多次请求关联同一个session,这个session需要存储到内存或者redis。多次请求使用同一个公用的session,这个session就是状态数据。 vue的vuex的store就是一种状态,首先它是多组件公用的,其次是不同的组件都可以修改它,最后它需要独立于组件单独存储。所以store就是一种状态

恕我直言你可能真的不会java第11篇-Stream API终端操作

人走茶凉 提交于 2020-08-05 12:22:41
一、Java Stream管道数据处理操作 在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图: 第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流 第二阶段(图中虚线部分):管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。 第三阶段(图中绿色):管道流结果处理操作,也就是本文的将介绍的核心内容。 在开始学习之前,仍然有必要回顾一下我们之前给大家讲过的一个例子: List<String> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur"); List<String> list = nameStrs.stream() .filter(s -> s.startsWith("L")) .map(String::toUpperCase) .sorted() .collect(toList()); System.out.println(list); 首先使用stream()方法将字符串List转换为管道流Stream 然后进行管道数据处理操作,先用fliter函数过滤所有大写L开头的字符串

Java Stream函数式编程第三篇:管道流结果处理

我怕爱的太早我们不能终老 提交于 2019-12-04 06:45:36
一、Java Stream管道数据处理操作 在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图: 第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流 第二阶段(图中虚线部分):管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。 第三阶段(图中绿色):管道流结果处理操作,也就是本文的将介绍的核心内容。 在开始学习之前,仍然有必要回顾一下我们之前给大家讲过的一个例子: List<string> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur"); List<string> list = nameStrs.stream() .filter(s -> s.startsWith("L")) .map(String::toUpperCase) .sorted() .collect(toList()); System.out.println(list); 首先使用stream()方法将字符串List转换为管道流Stream 然后进行管道数据处理操作,先用fliter函数过滤所有大写L开头的字符串

SpringBean详解 一点课堂(多岸学院)

冷暖自知 提交于 2019-11-28 15:47:05
前言 在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。 Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢? 例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入Spring框架之后,每个Action都是单例的,那么对于Spring托管的单例Service Bean,如何保证其安全呢? Spring的单例是基于BeanFactory也就是Spring容器的,单例Bean在此容器内只有一个,Java的单例是基于 JVM,每个 JVM 内只有一个实例。 在大多数情况下。单例 bean 是很理想的方案。不过,有时候你可能会发现你所使用的类是易变的,它们会保持一些状态,因此重用是不安全的。在这种情况下,将 class 声明为单例的就不是那么明智了。因为对象会被污染,稍后重用的时候会出现意想不到的问题。所以 Spring 定义了多种作用域的bean。 一 bean的作用域 创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的“配方”