首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

List对象去重及按属性去重的8种方法-java基础总结第六篇

playerList.add(new Player("zimug","18")); //注意这里名字和年龄重复 } } Player对象就是一个普通的java对象,有两个成员变量name...如果你的List放入的是Object对象,需要你去实现对象的equals和hashCode方法,去重的代码实现方法和List去重是一样的。...然后distinct去重,最后在将Stream流collect收集为List。...三、按照集合元素对象属性去重 其实在实际的工作中,按照集合元素对象整体去重的应用的还比较少,更多的是要求我们按照元素对象的某些属性进行去重。...age='32'} Player{name='curry', age='30'} Player{name='zimug', age='27'} 第四种方法 第四种方法实际上不是新方法,上面的例子都是按某一个对象属性进行去重

8.1K22
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念

    本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程?...Java8中的行为参数化,传递的将是更加纯粹的行为,而不再需要借助一个匿名对象的形式,而且,Lambda表达式不会像内部类一样生成一个类 传递的是方法本身,方法中的代码本身 那么行为参数化,不也就是函数式编程中的闭包特性么...中表示一个函数,并且对函数进行调用 ---- 流 流,流动,流水,java中早就已经有了IO流,形象的表达了数据在程序中的处理与流动 Java8中的Stream流则更倾向于流水线的含义 每个节点有各自独立的功能目的...这就是确定行为参数 Java8中使用方法引用或者Lambda-匿名函数  或者方法引用来表示行为参数 4.行为的属性 既然是流水线式的工作方式,那么当前的工作结束后或许结束了或许是进入到流水线的下一环节...List 总结: Java8 构建了三个主要概念,函数接口,流,收集器 有了函数接口  函数拥有了类型也就是可以像值一样作为参数进行传递,作为返回值,或者使用变量进行表示 使用Lambda-匿名函数或者方法引用来表示行为参数

    80420

    Java8-Stream API

    flatMap(Function f) 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流 sorted(Comparator comp) 产生一个新流,其中按比较器顺序排序...sorted() 产生一个新流,其中按自然顺序排序 终止操作: ​ 终端操作会从流的流水线生成结果。...Java8中提供了一个Collectors工具类, 工具中提供了很多静态方法,可以方便地创建常见收集器例 具体方法与实例如下表 方法 返回类型 作用 toList List 把流中元素收集到List toSet...Set 把流中元素收集到Set toCollection Collection 把流中元素收集到创建的集合 groupingBy Map> 根据某属性值对流分组,属性为K,结果为V partitioningBy...Map> 根据true或false进行分区 这里只列出了一些常用的方法.具体参考Java8 Stream API : Java Platform SE 8 Stream API 使用 中间操作 终止操作

    73420

    最火的java8新特性:Lambda 表达式

    其他新特性 Java 8新特性简介 速度更快 代码更少(增加了新的语法 Lambda 表达式) 强大的 Stream API 便于并行 最大化减少空指针异常 Optional 1、Lambda表达式 Lambda...是一个匿名函数 在Java 语言中引入了一个新的语法元 素和操作符。...,然后把所有流连接成一个流 排序 方 法 描述 sorted() 产生一个新流,其中按自然顺序 sorted(Comparator comp) 产生一个新流,其中按比较器顺序 查找与匹配 方 法 描述...收集流中Integer属性的统计值:list.stream().collect(Collectors.summarizingInt(类名::属性名));一次性得到元素个数、总和、均值、最大值、最小值...Java 8 中将并行进行了优化,我们可以很容易的对数据进行并 行操作。Stream API 可以声明性地通过 parallel() 与 sequential() 在并行流与顺序流之间进行切换。

    42530

    Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    将员工按薪资从高到低排序,同样薪资者年龄小者在前。 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。...的简单区分: stream是顺序流,由主线程按顺序对流执行操作。...更详细说明请见:菜鸟教程Java 8 Optional类(https://www.runoob.com/java/java8-optional-class.html) 接下来,大批代码向你袭来!...从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。 collect主要依赖java.util.stream.Collectors类内置的静态方法。...案例:将员工按薪资是否高于8000分为两部分;将员工按性别和地区分组 public class StreamTest { public static void main(String[] args)

    1.3K10

    Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    将员工按薪资从高到低排序,同样薪资者年龄小者在前。 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。...的简单区分: stream是顺序流,由主线程按顺序对流执行操作,而parallelStream是并行流,内部以多线程并行执行的方式对流进行操作,但前提是流中的数据处理没有顺序要求。...案例一:求Integer集合的元素之和、乘积和最大值。...从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。 collect主要依赖java.util.stream.Collectors类内置的静态方法。...案例:将员工按薪资是否高于8000分为两部分;将员工按性别和地区分组 public class StreamTest { public static void main(String[] args)

    3.6K40

    【Java面试系列】Java 基础常问面试题

    Java 基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象,String 不属于基础类型。...final, finally, finalize的区别 final 用于声明属性,方法和类, 分别表示属性不可变, 方法不可覆盖, 类不可继承。...finally 是异常处理语句结构的一部分,表示总是执行. finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,...StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于...功能区分:输入流(input),输出流(output) 类型区分:字节流,字符流 字节流和字符流的区别是:字节流按 8 位传输以字节位单位输入输出数据,字节流按 16 位传输已字符流按 16 位传输以字符为单位输入输出数据

    59840

    Java基础(二十六):Stream流及Optional类

    Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五)...list.parallelStream(); } 2、通过数组创建Stream Java8 中的 Arrays 的静态方法 stream() 可以获取数组流: public static ...forEach 相同点:peek和forEach都是遍历流内对象并且对对象进行一定的操作 不同点:forEach返回void结束Stream操作,peek会继续返回Stream对象 employeeList.stream...Integer属性的平均值 averagingDouble:计算流中元素Double属性的平均值 averagingLong:计算流中元素Long属性的平均值 返回值都是Double Double aDouble...Integer属性的总和 summingDouble:计算流中元素Double属性的总和 summingLong:计算流中元素Long属性的总和 Integer count = employeeList.stream

    19810

    Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    将员工按薪资从高到低排序,同样薪资者年龄小者在前。 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。...(); 2、使用java.util.Arrays.stream(T[] array)方法用数组创建流 int[] array={1,3,5,6,8}; IntStream stream = Arrays.stream...的简单区分:」 stream是顺序流,由主线程按顺序对流执行操作,而parallelStream是并行流,内部以多线程并行执行的方式对流进行操作,但前提是流中的数据处理没有顺序要求。...从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。 ❝collect主要依赖java.util.stream.Collectors类内置的静态方法。...Stream分组partitioningBy/groupingBy 「案例:将员工按薪资是否高于8000分为两部分;将员工按性别和地区分组」 public class StreamTest {  public

    77120

    Java8的双绝学之一stream能用来做什么?

    前言 ✓ 优质技术好文见专栏 个人公众号,分享一些技术上的文章,以及遇到的坑 当前系列:Java8 新特性 系列 源代码 git 仓库 代码Git 仓库地址 强大Stream API Java 8 是一个非常成功的版本...,Java8 新增的Stream,配合同版本出现的 Lambda ,给我们操作集合提供了极大的便利。...java8两大招牌 一个是函数式编程 Lambda 表达式,一个是Stream流 Stream API(java.util.stream)把真正的函数式编程风格引入到java中,这是目前为止对java类库最好的补充...因为Stream API可以极大的提供Java程序员的生产力,让程序员写出更高效率和干净,简洁的代码 Stream是Java8处理结合的关键抽象概念,他可以指定你希望对集合进行的操作,可以执行非常复杂的查找...,就执行中间操作链,并且产生结果,之后不在被使用 流程图 创建各种场景stream流 /** * @projectName: Java8 * @package: Stream * @className

    66910

    Java 8 Lambda函数编程【面试+工作】

    T T BinaryOperator (T,T) T 流 Java 8中新增的对核心类库的改进主要包括集合类的 API 和新引入的流 (Stream)。...二进制接口的兼容性 Java 8中对API最大的改变在于集合类。虽然Java在持续演进,但它一直在保持着向后二进制兼容。...高级集合类和收集器 Java 8对集合类的改进不止第一讲的那些。还有一些高级主题,包括新引入的 Collector 类、方法引用等。...如果需要保证按顺序处理,应该使用 forEachOrdered 方法。 使用收集器 一种通用的、从流生成复杂值的结构就是收集器。 转换成其他集合 有一些收集器可以生成其他集合。...例如使用 toCollection,用定制的集合收集元素: ? 转换成值 还可以利用收集器让流生成一个值。maxBy 和 minBy 允许用户按某种特定的顺序生成一个 值。

    1.2K31

    Lambda表达式和函数式编程

    Lambda表达式和函数式编程 一.函数式编程概念 (a,b) -> {xxx} 参数 -> 方法体 左侧一个参数时()可以省略,右侧就一句方法体时{}可以省略 二.JDK8引入的函数是编程接口类...,假设User对象具有id,name,age三个属性,下面的例子以操作User对象为例 User user = new User(); List userList = new ArrayList...作用类似,设计上reduce应该和不可变得对象一起工作,如果对象是可变的,也可以得到结果,但是不是线程安全的,性能要弱于Collect,但是很灵活 第一个参数是初始值(可以不设置,不设置默认流中的第一个元素为初始值...,分组统计和收集器 首先我们来说下收集器中的聚合函数哈,虽然在数据库层面提供了分组,求平均值,计算数量,最大值,最小值等功能,但不代表我们没有在Lambda中完成上述操作的需求,因为毕竟是在内存中完成的聚合计算...操作类似 五.Optional流操作 Optional是Java8新增的在java.util包下,主要用来辅助处理Java流式操作中的null值,它在返回结果之上又封装了一层,封装的这层永远不会出现null

    1.3K30

    这篇最全 Java 8 讲解,有没有之一看完再说

    Java 8 的第一个编程思想就是「流处理」,流式一系列数据项,一次只生成一项,程序可以从输入流中一个一个读取数据项,然后以同样的方式将数据项写入输出流。...Collection 把流中所有项目收集到给定的供应源创建的集合 counting Long 计算流中元素的个数 summingInt Integer 对流中项目的一个整数属性求和 averagingInt...Double 计算流中项目Integer属性的平均值 joining String 连接对流中每个项目调用toString方法所生成的字符串 maxBy Optional 一个包裹了流中按照给定比较器选出最大元素的...使用map Optional 中的 map()方法和流中的map()相似,都是从Optional对象中提取和转换值。...在 Java 8之前,我们对日期和时间的支持智能依赖 java.util.Date类,这个类无法表示日期,只能以毫秒的精度表示时间。

    80630
    领券