首先在阿里的规范里是这样说的: 【强制】二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象。 那到底为啥不能用呢?...枚举 首先我们得先思考一下枚举是否可以进行序列化,我们在把对象进行传输的时候需要将这个对象序列化为字节序列进行传输(在linux中一切皆文件,JVM虚拟机将对象变为字节给到内核通过传输协议进行打包传)枚举在进行编译后会生成一个相关的类...,这个类,这个类继承了JavaAPI中的java.lang.Enum类。...只是拿了对应枚举的name(感觉是个坑啊),这也阿里规范中不能使用枚举放在DTO的原因之一吧== ?...(我觉得这个假设是参数可以使用枚举型的前提)在这个假定下如果我们在接口中使用枚举型,如孤尽兄在java开发手册中所述,分为参数和返回值两种情况。
流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现) Java 8中的Stream API可以让你写出这样的代码: 声明性——更简洁,更易读 可复合...元素序列 就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。...因为集合是数据结构,所以它的主要目的是以特定的时间/空间复杂度存储和访问元 素(如ArrayList 与 LinkedList)。但流的目的在于表达计算,集合讲的是数据,流讲的是计算。 2....流水线的操作可以 看作对数据源进行数据库式查询。 2. 内部迭代 与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的。...集合是一个内存中的数据结构,它包含数据结构中目前所有的值——集合中的每个元素都得先算出来才能添加到集合中。
第四后总结中的大部分知识点内容我之前都发过,这只是我的一个总结。 1. 集合 1.1 为什么使用集合 开发中会使用大量相同数据类型的情况。如果使用数组来解决问题 1....数据类型支持多样化,但是又不失数据类型一致要求 3. 容量可以变,并且不用开发者操心 1.2 集合架构 Java中集合的【总接口】Collection。...(); 判断是否是隐藏文件 boolean exists(); 判断文件是否存在 4.5 获取文件属性 用处不大的方法 下面的方法和文件是否存在没有一分钱关系,都可以使用字符串操作直接得到我们想要的结果...如果是字符内容操作,效率还可以!!! 如果是非字符操作,凶多吉少!!! 字符流操作文件 个人建议,该文件可以使用notepad 记事本打开无乱码,可以使用字符流操作。...把字节序列化保存到文件中,就可以做到持久化保存数据内容。 从文件中读取字节序列化数据,可以直接得到对应的对象。
2. java.util包 集合框架 Java.util包中的集合框架提供了一组接口和类,用于存储和操作对象集合。...这在编写需要随机性的程序时非常有用,比如模拟游戏中的随机事件或生成测试数据等。 输入输出 Java.util包中的Scanner类提供了一种方便的方式来从输入流中获取用户输入。...开发者可以使用Scanner类读取控制台输入、文件内容或其他输入流中的数据,并进行相应的处理。这在编写需要用户交互的程序时非常有用,比如从用户那里获取输入参数或读取用户输入的命令等。...应用场景 Java.util包的功能和类在实际开发中有着广泛的应用场景。比如: 使用集合框架进行数据存储和操作,如存储用户信息、管理商品列表等。...这些扩展包提供了丰富的功能和特性,可以帮助开发者更好地满足特定领域的需求。 结语 Java中的各种包和类库为开发者提供了丰富的工具和功能,帮助开发者更高效地编写Java程序。
//是否包含在集合中 boolean containsAll(Collection c) //是否包含所有的元素 Iterator iterator() // 获取迭代器 Object...() {} //获取并行流 里面获取并行流的方法parallelStream(),其实就是通过默认的ForkJoinPool(主要用来使用分治法(Divide-and-Conquer Algorithm...,Collection接口定义了功能规范,有以下功能方法: 添加元素 删除元素 判断是否包含/是否全部包含/是否为空 获取迭代器/可分割迭代器 获取长度 取交集 获取流/并行流 我们遍历元素的时候可以获取...:按照默认或者自己定义的顺序来排序元素,底层使用堆(完全二叉树)实现,使用动态数组实现, BlockingQueue:在java.util.concurrent包中,阻塞队列,满足当前无法处理的操作。...对于Collection集合我们应该使用哪一个? 每个实现都有自己的特点,重要的是知道当前数据以及业务的特点,选取最适合的集合类进行数据操作。
可以将Stream流看做是对集合操作功能的增强,可以对集合的各种高效、便利的聚合操作( 类似SQL语句一样的操作, 比如filter,map,sorted等)。...Stream流不同于其他集合框架,它也不是某种数据结构,它并不会存储元素,而是按需计算,这让它使用起来更像一个高级的迭代器。 Stream不会改变数据源,通常情况下会产生一个新的集合或一个值。...创建流 stream是顺序流,由主线程按顺序对流执行操作; parallelStream是并行流,内部以多线程并行执行的方式对流进行操作,如果对流中的数据处理没有顺序要求就可以使用并行流。...(一般不建议使用并行流,不熟悉的话很容易踩坑,使用情况经常是弊大于利) 例如筛选集合中的奇数,两者的处理不同之处: 常见的创建方式: Collection.stream ()从集合获取流。...BufferedReader.lines () 从输入流中获取流。 IntStream.of () 从静态方法中获取流。
本节主要包括以下内容: 流的相关概念 使用流 收集器 二、流的相关概念 流允许你以声明性方式处理数据集合,可以将其看成遍历数据集的高级迭代器。 流可以透明地并行处理。 1....什么是流 1.1 定义 从支持数据处理操作的源生成的元素序列 元素序列 就像集合一样, 流也提供了一个接口, 可以访问特定元素类型的一组有序值。...因为集合是数据结构, 所以 它的 主要 目的是以特定 的 时间/ 空间 复杂度存储和访问元素( 如 ArrayList 与 LinkedList)。...集合是一个内存中的数据结构, 它包含数据结构中目前所有的值——集合中的每个元素都得先算出来才能添加到集合中。...三、使用流 流的使用一般包括三件事: 一个数据源(如集合)来执行一个查询 一个中间操作链,形成一条流的流水线 一个终端操作,执行流水线并能生成结果 流的流水线背后的理念类似于构建器模式。
TOC 一、Collection接口简介 collection在java集合中,算是顶级接口,它继承了iterable接口,不能实例化,只能实例化其子类。...() {} //获取并行流 里面获取并行流的方法parallelStream(),其实就是通过默认的ForkJoinPool(主要用来使用分治法(Divide-and-Conquer Algorithm...,Collection接口定义了功能规范,有以下功能方法: 添加元素 删除元素 判断是否包含/是否全部包含/是否为空 获取迭代器/可分割迭代器 获取长度 取交集 获取流/并行流 我们遍历元素的时候可以获取...:按照默认或者自己定义的顺序来排序元素,底层使用堆(完全二叉树)实现,使用动态数组实现, BlockingQueue: 在java.util.concurrent包中,阻塞队列,满足当前无法处理的操作。...对于Collection集合我们应该使用哪一个? 每个实现都有自己的特点,重要的是知道当前数据以及业务的特点,选取最适合的集合类进行数据操作。
Java 8引入了Stream API,这是一个用于处理集合元素的强大工具。通过Stream流,你可以以一种声明式的方式处理数据,使得代码更加简洁、易读且易于维护。...提升编程效率的利器: 解析Google Guava库之集合篇RangeSet范围集合(五) 一、Stream流的特点和使用流程 Stream API 是 Java 8 引入的一个新特性,它允许开发者以声明性方式处理数据集合...使用流程: 创建流: 从数据源(如集合、数组、文件等)创建一个流。...通过集合创建: 这是创建Stream最常用的方式之一。你可以通过调用集合对象的stream()方法来获取一个流。例如,如果你有一个List或Set,你可以直接调用它们的stream()方法来获取流。...收集操作 3.1 collect 收集(三个参数) collect 方法在 Java Stream API 中通常用于收集流中的元素到某种集合或其他数据结构中。
1.概述 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。...这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。 元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。...操作流 Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,可以在后头跟上其他中间操作 //接下来的示例代码基于此集合 List<String...使用IntSummaryStatistics类处理数据 1....IntSummaryStatistics类 IntSummaryStatistics类,在 java8中配合Stream使用,是用于收集统计信息(例如计数,最小值,最大值,总和和*平均值)的状态对象。
Stream(流)是一个来自数据源的元素队列 元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。 数据源 流的来源。 可以是集合,数组等。...当使用一个流的时候,通常包括三个基本步骤:获取一个数据源(source)→ 数据转换→执行操作获取想要的结 果,每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换)...获取一个流非常简单,有以下几种常用的方式: 所有的 Collection 集合都可以通过 stream 默认方法获取流; Stream 接口的静态方法 of 可以获取数组对应的流。...映射:map 如果需要将流中的元素映射到另一个流中,可以使用 map 方法。方法签名: Stream map(Function mapper); 该接口需要一个 Function 函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。
本篇主要内容如下: Lambda表达式 方法引用 Stream API Optional类 1、Lambda表达式 Lambda表达式是Java 8中重要的新特性之一,它可以让我们的Java代码变得更加简洁...Java 8允许将Lamdba表达式作为一个方法参数或者作为一个数据变量来传递。Lambda表达式也可以让我们更加简洁地实现单方法接口(称为功能接口)。...这也是Java 8函数式编程中非常重要的一部分。 生成流 我们可以基于Java的集合通过调用 stream() 方法来快速为集合创建流。...forEach方法来遍历流中的数据。...而使用Optional可以省去对null的判断。可以使用 isPresent()判断是否有值,使用get()可以获取到元素值。
---- 什么是流 集合是Java中使用最多的API 。 可以让你把数据分组并加以处理。尽管集合对于几乎任何一个Java应用都是不可或缺的,但集合操作却远远算不上完美。...Java 8中的集合支持一个新的stream 方法,它会返回一个流(接口定义在 java.util.stream.Stream 里) 元素序列 就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值...但流的目的在于表达计算,比如 filter 、 sorted 和 map 。集合讲的是数据,流讲的是计算。 源 流会使用一个提供数据的源,如集合、数组或输入/输出资源。...流水线的操作可以看作对数据源进行数据库式查询。 内部迭代 与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的。...集合是一个内存中的数据结构,它包含数据结构中目前所有的值——集合中的每个元素都得先算出来才能添加到集合中。(你可以往集合里加东西或者?
Stream(流)是一个来自数据源的元素队列 元素是特定类型的对象,形成一个队列,Java中的Stream并不会存储元素,而是按需计算。 数据源流的来源,可以使集合、数组等。...通常使用流的三个基本步骤 获取一个数据源(Source) 数据转换 执行操作获取险要的结果 每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以像链条一样排列...,获取流有一下几种方式 所有的Collection集合都可以通过stream默认方法获取流 Stream接口的静态方法of可以获取数组对应的流 1.根据Collection获取流 java.util.Collection...(System.out::println); 3.映射:map 如果需要将流中的元素映射到另一个流中,可以使用map方法,方法签名: Stream map(Function mapper); 该接口需要一个Function函数式接口,可以将当前流中的T类型数据转换为另一种R类型的流 此前我们已经学习过 java.util.stream.Function
Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。...当然,使用NIO的API调用时看起来与使用IO时有所不同,但这并不意外,因为并不是仅从一个InputStream逐字节读取,而是数据必须先读入缓冲区再处理。...通道(Channel) Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。...,用“位与”操作interest 集合和给定的SelectionKey常量,可以确定某个确定的事件是否在interest 集合中。...也不会通知你发出的数据包是否已收到,因为UDP在数据传送方面没有任何保证。 11.4 连接到特定的地址 可以将DatagramChannel“连接”到网络中的特定地址的。
对于Java配置,可以使用Enable${store}Repositories注释的queryLookupStrategy属性。但某些策略可能不支持特定的数据存储。...是否支持忽略大小写可能因存储而异,因此请参阅参考文档中的相关部分以了解特定于存储的查询方法。 通过向引用属性的查询方法追加OrderBy子句并提供排序方向(Asc或Desc),可以应用静态排序。...6、返回集合或迭代的存储库方法 返回多个结果的查询方法可以使用标准的Java Iterable, List, Set。...与将查询结果包装在流数据存储中不同,使用特定的方法执行流,如下面的示例所示 例23:用Java 8 Stream<T流处理查询的结果 @Query("select u from User u") Stream...您可以使用close()方法手动关闭流,也可以使用Java 7 try-with-resources块,如下面的示例所示 例24:try-catch形式使用Stream try (Stream<User
监控数据库发生的变化是MongoDB同步数据服务的关键。我们不需要去定期轮训查询集合中的更改文档,我们就可以可以更轻松地过滤Change Streams 变化流,并立即采取处理错误。...变更流使其变得简单并且支持监听集合中的数据变化,而不在需要跟踪Oplog。是不是非常简单方便?让我们看一下Java和Node.js示例中movieDetails集合中发生的一些变化。...我们使用.on添加一个事件触发器(“change”,...然后代码将在变化流changeStream中获取changeStream事件,随后它将调用一个函数,执行处理代码。...如果我们只对特定数据库中发生的事件感兴趣,可以打开数据库并对其执行watch()。 我们可以获得该数据库中collection集合的所有更新,以及删除和重命名事件。...复制集合的困难点在于,检查新集合是否影响以前的集合,还有就是我们监控不到创建索引和其他操作,这些操作不会反映在为更改文档的日志中,不能通过变更流监控。
集合是一个内存中的数据结构,它包含数据结构中目前所有的值--集合中的每个元素都得先计算出来才能添加到内存里。...(你可以往集合里加东西或者删东西,但是不管什么时候,集合中的每个元素都是放在内存里的,元素都得计算出来才能成为集合的一部分。)...相比之下,流则是在概念上固定的数据结构(你不能添加或者删除元素),其元素则是按需计算的。这对编程有很大的好处。用户仅仅从流中提取需要的值,而这些值--在用户看不见的地方--只会按需生成。...查找和匹配 另一个常见的数据处理套路是看看数据集中的某些元素是否匹配一个给定的属性。...诸如map和filter等操作会从输入流中获取每一个元素,并在输出流中得到0或1个结果。这些操作一般是无状态的:他们没有内部状态(假设用户提供的lambda或者方法引用没有内部可变状态)。
=i.intValue()+200; 在使用包装类类型的时候,如果做操作,最好先判断是否为null 只要是对象,在使用前就必须进行不为null的判断 Date Date代表了一个特定的事件,精确到毫秒...清空集合中的元素 boolean contains(Object o) 判断集合中是否存在指定的元素 boolean isEmpty() 判断集合是否为空 int size() 集合的长度,也就是集合中元素的个数...):判断集合是否包含指定的值 boolean isEmpty():判断集合是否为空 int size():集合的长度,也就是集合中键值对的个数 获取功能 V get(Object key):根据键获取值...系统类加载器通常用于定义应用程序类路径,模块路径和JDK特定工具上的类。 平台类加载器是所有平台类对其可见的系统类加载器的父级或祖先 反射 Java反射机制:是指在运行时获取一个类的变量和方法信息。...并被JVM读取到 @Documented:描述注解是否被抽取到API文档中 @Inherited:描述注解是否被子类继承 获取注解中定义的属性值 获取注解定义的Class的对象 获取指定的注解 Class
上述代码的第二部分使用Stream API的方式来计算,首先通过集合类获取了一个普通的stream,如果数据量大可以使用parallelStream方法获取一个并发的stream,这样接下来的计算程序员不需要编写任何多线程代码系统会自动进行多线程计算...获取了stream以后首先调用filter方法找到是否为VIP用户然后对VIP用户进行排序操作,接下来限制只获取三个用户的信息,然后将用户映射为用户ID,最后将该stream转换为集合类,两种实现方式的结果完全一样...当我们要使用Stream API时,首先需要创建一个Stream对象,可以通过集合类的实例方法stream或parallelStream来获取一个普通的串行stream或是并行stream。...也可以使用Stream、IntStream、LongStream或DoubleStream创建一个Stream对象,Stream是一个比较通用的流,可以代表任何引用数据类型,其他的则是指特定类型的流。...Stream的创建 通过集合类创建 通过集合创建Stream的方法是我们最常用的,集合类的实例方法stream和parallelStream可以获取相应的流。
领取专属 10元无门槛券
手把手带您无忧上云