java stream流常用方法

2023-11-16

1、分组

// 按照sn分组:  List<Map<String, Object>> dataList
Map<String, List<Map<String, Object>>> dataMap = dataList.stream().collect(Collectors.groupingBy(e -> e.get("sn") + ""));	

//按照职员部分分组: List<Employee> list
Map<String, List<Employee>> collect = list.stream().collect(Collectors.groupingBy(i -> i.getUnitName()));

//多条件分组
Map<String, Map<String,List<Employee>>> collect =list.stream().collect(Collectors.groupingBy(i -> i.getUnitName(),Collectors.groupingBy(i -> i.getWorkType())));

        //按年龄分组,年龄相同的是一组
        Map<Integer, List<Person>> 分组 = list.stream().collect(Collectors.groupingBy(Person::getAge));
 
        //按年龄分组后按工资分组,多级分组
        Map<Integer, Map<String, List<Person>>> 多级分组 = list.stream().collect(Collectors.groupingBy(Person::getAge, Collectors.groupingBy(x -> {
            return x.getSalary() > 3000 ? "高" : "低";
        })));
 
// 分组排序 ,拿已经排好序的过来分组
LinkedHashMap<String, List<AttendanceRuleGroup>> groupingByruleGroupList = ruleGroupList.stream().collect(Collectors.groupingBy(AttendanceRuleGroup::getCategory, LinkedHashMap::new, Collectors.toList()));

// 分组排序,集合没排序,我们自己按我们想要的排序
 LinkedHashMap<String, List<AttendanceRuleGroup>> groupingByruleGroupList = ruleGroupList.stream().sorted(Comparator.comparingLong(AttendanceRuleGroup::getSort).reversed()).collect(Collectors.groupingBy(AttendanceRuleGroup::getCategory, LinkedHashMap::new, Collectors.toList()));

2、过滤

//根据指定sn,过滤出符合的数据: List<Map<String, Object>> deviceDataList
List<Map<String, Object>> tempDeviceDataList = deviceDataList.stream().filter(map -> map.get("sn").toString().equals(sn)).collect(Collectors.toList());

//筛选出工资大于10000的职员
List<Employee> newList = list.stream().filter(item -> {
			return item.getSalary().compareTo(new BigDecimal(10000)) > 0 && !item.getWorkType().equals("项目经理");
		}).collect(Collectors.toList());

3、List map互转

1、list转map

// (k1,k2)->k2 避免键重复 k1-取第一个数据;k2-取最后一条数据
//key和value,都可以根据传入的值返回不同的Map
Map<String, String> deviceMap = hecmEnergyDevicesList.stream().collect(Collectors.toMap(i -> i.getDeviceNum(), j -> j.getDeviceName(), (k1, k2) -> k1));
//
Map<String, Object> map = list.stream()
				.collect(Collectors.toMap(i -> i.getEmpName() + i.getUnitName(), j -> j, (k1, k2) -> k1));

2、map转list

//在.map里面构造数据 return什么数据就转成什么类型的list
List<Employee> collect = map.entrySet().stream().map(item -> {
			Employee employee = new Employee();
			employee.setId(item.getKey());
			employee.setEmpName(item.getValue());
			return employee;
		}).collect(Collectors.toList());

4、求和/极值

//在egyList里面求cols的和
public static BigDecimal getSumBig(List<Map<String,Object>> egyList, String cols){
        BigDecimal consuBig = egyList.stream()
                .filter((Map m)->StringUtils.isNotEmpty(m.get(cols)+"") && !"null".equals(String.valueOf(m.get(cols)))
                        && !"-".equals(String.valueOf(m.get(cols))))
                .map((Map m)->new BigDecimal(m.get(cols)+""))
                .reduce(BigDecimal.ZERO,BigDecimal::add);
        return consuBig;
}

//List<Employee> list
//Bigdecimal求和/极值: 
BigDecimal sum = list.stream().map(Employee::getSalary).reduce(BigDecimal.ZERO,BigDecimal::add);
BigDecimal max = list.stream().map(Employee::getSalary).reduce(BigDecimal.ZERO,BigDecimal::max);

//基本数据类型求和/极值:
Integer sum = list.stream().mapToInt(Employee::getId).sum();
Long sum = list.stream().mapToLong(Employee::getId).sum();
Double sum = list.stream().mapToDouble(Employee::getId).sum();

OptionalInt optionalMax = list.stream().mapToInt(Employee::getId).max();
optionalMax.getAsInt();

5、求最大/最小值的对象

Optional<Employee> optional = list.stream().collect(Collectors.maxBy(Comparator.comparing(Employee::getId)));
 if (optional.isPresent()) { // 判断是否有值
 		Employee user = optional.get();
 }
return optional.orElse(new Employee());

6、去重

//去重之后进行拼接: List<String> deviceNodeList
Srting deviceNodeStr = deviceNodeList.stream().distinct().collect(Collectors.joining("','"));
//直接去重返回list
// List<String> deviceIdList
 List<String> deviceIdList = deviceIdList.stream().distinct().collect(Collectors.toList());

7、排序

//按照时间排序 1升 -1降
Collections.sort(listFast, (p1, p2) -> {
     return String.valueOf(p1.get("time")).compareTo(p2.get("time") + "");
});

// s1-s2 升序   s2-s1降序
Collections.sort(list,(s1,s2) -> s1.getSalary().compareTo(s2.getSalary()));

//多条件排序: List<Employee> list, s1-s2 升序   s2-s1降序
list.sort(Comparator.comparing(Employee::getSalary).reversed().thenComparing(Employee::getId).reversed());

8、拼接

//将某个字段,按照某个字符串拼接:  List<Map<String, Object>> deviceMapList 
String sns = deviceMapList.stream()
     	.map((m)->m.get("sn")+"").collect(Collectors.joining(","));
//使用场景很多,在sql里面用于组织in的值.比如:
SELECT sn,time,value FROM electric_real_time WHERE FIND_IN_SET(sn,?)
List<Map<String, Object>> dataList = JdbcUtil.getJdbcTemplate().queryForList(dataSql, sns)

        List<String> strs = Arrays.asList("a","b","cd");
 
        //连接所有内容
        String str = strs.stream().collect(Collectors.joining());
        System.out.println(str);
        //输出:abcd
 
        //连接所有内容,中间加一个逗号隔开
        String str1 = strs.stream().collect(Collectors.joining(","));
        System.out.println(str1);
        //输出:a,b,cd
 
        //连接所有内容,中间加一个逗号隔开,两边加上括号
        String str2 = strs.stream().collect(Collectors.joining(",","(",")"));
        System.out.println(str2);
        //输出:(a,b,cd)

9、统计

//统计:和、数量、最大值、最小值、平均值: List<Employee> list
IntSummaryStatistics collect = list.stream().collect(Collectors.summarizingInt(Employee::getId));
System.out.println("和:" + collect.getSum());
System.out.println("数量:" + collect.getCount());
System.out.println("最大值:" + collect.getMax());
System.out.println("最小值:" + collect.getMin());
System.out.println("平均值:" + collect.getAverage());

10、平均值

OptionalDouble average = list.stream().mapToInt(Employee::getId).average();
average.getAsDouble();

11、某个值的数量

//List<Employee> list
Map<BigDecimal, Long> collect = list.stream().collect(Collectors.groupingBy(i -> i.getSalary(),Collectors.counting()));

//List<Map<String,Object>> egyList
long count = egyList.stream()
     .filter((Map m)->StringUtils.isNotEmpty(m.get(cols)+""))
     .map((Map m)->new BigDecimal(m.get(cols)+""))
     .count();

12、分区

//List<Employee> list
//单层分区
Map<Boolean, List<Employee>> collect = list.stream().collect(Collectors.partitioningBy(i -> i.getId() == 1));

//分区 满足条件的一个区,不满足条件的一个区
        Map<Boolean, List<Person>> collect1 = list.stream().collect(Collectors.partitioningBy(e -> e.getSalary() < 2000));

//多层分区
Map<Boolean, Map<Boolean,List<Employee>>> collect = list.stream().collect(Collectors.partitioningBy(i -> i.getId() == 1,Collectors.partitioningBy(i -> i.getSalary().compareTo(new BigDecimal(20000)) == 0)));

13、截断

        List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8);
 
        //中间操作:不会执行任何操作
        Stream<Integer> stream = list.stream()
                .filter(e -> {
                    System.out.println("过滤 中间操作");
                    return e>3;
                })
                .limit(2);
 
        //终止操作:一次性执行全部内容,惰性求值
        stream.forEach(System.out::println);

14、跳过

        List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8);
 
        //中间操作:不会执行任何操作
        Stream<Integer> stream = list.stream()
                .skip(5);
 
        //终止操作:一次性执行全部内容,惰性求值
        stream.forEach(System.out::println);

15、查找与匹配

        List<Person> list = Arrays.asList(
                new Person(18,3939),
                new Person(38,9999),
                new Person(17,9999),
                new Person(19,9988),
                new Person(38,99)
        );
 
        //是否匹配所有元素 此处返回false
        boolean b = list.stream().allMatch(e -> e.getAge() == 18);
        System.out.println(b);
 
        //至少匹配一个元素,此处返回true
        boolean b1 = list.stream().anyMatch(e -> e.getAge() == 19);
        System.out.println(b1);
 
        //流中是否没有匹配元素,此处返回false
        boolean b2 = list.stream().noneMatch(e -> e.getAge() == 19);
        System.out.println(b2);
 
        //排序后获取第一个元素
        Optional<Person> first = list.stream().sorted((x, y) -> x.getAge().compareTo(y.getAge())).findFirst();
        System.out.println(first);
 
        //获取流中任意一个元素
        list.stream().findAny();
 
        //返回流中元素的总个数
        list.stream().count();
 
        //返回流中最大值 此处根据年龄比较
        Optional<Person> max = list.stream().max((x, y) -> x.getAge().compareTo(y.getAge()));
        System.out.println(max.get());
 
        //返回流中最小值 此处根据年龄比较
        Optional<Person> min = list.stream().min((x, y) -> x.getAge().compareTo(y.getAge()));
        System.out.println(min.get());
 
        //获取最小的年龄
        Optional<Integer> age = list.stream().map(Person::getAge).min(Integer::compareTo);
        System.out.println(age.get());
 
 
        //获取一个并行流,并行流会使用多个线程操作流,stream()获取的是串行流,单个线程操作流
        list.parallelStream();
        
		//查找第一个元素
        Optional<Dish> collect = menu.stream().filter(dish -> dish.getCalories() > 1000).findFrist();
       

16、收集

        //取出所有年龄放到list集合中
        List<Integer> toList = list.stream().map(Person::getAge)
                .collect(Collectors.toList());
 
        //取出所有年龄放到set集合中
        Set<Integer> toSet = list.stream().map(Person::getAge)
                .collect(Collectors.toSet());
 
        //取出所有年龄放到hashSet集合中
        HashSet<Integer> toHashSet = list.stream().map(Person::getAge)
                .collect(Collectors.toCollection(HashSet::new));
 
        //获取集合中元素总和
        Long count = list.stream().collect(Collectors.counting());
 
        //获取年龄平均值
        Double avg = list.stream().collect(Collectors.averagingInt(Person::getAge));
 
        //获取工资总和
        Double sum = list.stream().collect(Collectors.summingDouble(Person::getSalary));
 
        //获取工资最大值的人
        Optional<Person> max = list.stream().collect(Collectors.maxBy((p1, p2) -> Double.compare(p1.getSalary(), p2.getSalary())));
        System.out.println(max.get());
 
        //获取工资最小值的人
        Optional<Person> min = list.stream().collect(Collectors.minBy((p1, p2) -> Double.compare(p1.getSalary(), p2.getSalary())));
        System.out.println(min.get());
 
        //获取元素个数、总和、最小值、平均值、最大值
        DoubleSummaryStatistics collect = list.stream().collect(Collectors.summarizingDouble(Person::getSalary));
        System.out.println(collect);
        //输出结果:DoubleSummaryStatistics{count=5, sum=34024.000000, min=99.000000, average=6804.800000, max=9999.000000}

17、全部转大写

        List<String> list = Arrays.asList("a","vvv","ddd");
 
        //中间操作:不会执行任何操作
        Stream<String> stream = list.stream()
                .map(x -> x.toUpperCase());
 
        //终止操作:一次性执行全部内容,惰性求值
        stream.forEach(System.out::println);

18、修改对象属性

// 过滤集合字段sysOrgCode为a的值的修改为111
List<DepartTreeVO> c = list.stream().filter(a->"a".equals(a.getSysOrgCode())).map(a -> {
	a.setSysOrgCode("111");
	return a;
}).collect(Collectors.toList());

// 给每个对象都填充一样的值
list.stream().forEach(a->{a.setId("11");a.setSysOrgCode("22");});

// 转换为对象
List<String> list = Arrays.asList("111", "222", "333", "444");
List<User> collect = list.stream().map(a -> {
	User user = new User();
	user.setId(a);
	return user;
}).collect(Collectors.toList());

19、转换为数组

// 转换为数组
Integer[] numberArray = numbers.stream().toArray(Integer[]::new);

20、flatMap扁平化处理

// 示例1
List<List<String>> stringLists = Arrays.asList(
    Arrays.asList("a", "b", "c"),
    Arrays.asList("c", "d", "e"),
    Arrays.asList("e", "f", "g")
);
List<String> uniqueCharacters = stringLists.stream()
                                           .flatMap(List::stream)
                                           .distinct()
                                           .collect(Collectors.toList());

System.out.println(uniqueCharacters); // [a, b, c, d, e, f, g]

// 示例2,person.getHobbies()get出来是下面第二个参数,是个集合
List<Person> people = Arrays.asList(
    new Person("John", Arrays.asList("reading", "painting")),
    new Person("Jane", Arrays.asList("swimming", "cooking")),
    new Person("Bob", Arrays.asList("gaming", "hiking"))
);

List<String> allHobbies = people.stream()
                                .flatMap(person -> person.getHobbies().stream())
                                .collect(Collectors.toList());

System.out.println(allHobbies); // [reading, painting, swimming, cooking, gaming, hiking]

。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中
。。。。持续更新添加中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java stream流常用方法 的相关文章

  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这

随机推荐

  • nvm安装完node后确无法使用node和npm

    问题 nvm安装了两个node版本后 使用use切换到指定版本 确还是不能使用node和npm 解决办法 找到nvm得安装位置 打开setting配置文件发现node的位置是错误的 两个版本的node都是安装在nvm文件夹下的 所以修改配置
  • TensorFlow基础(六)--TensorFlow中常用的优化器的对比与选择(Optimizer)

    目录 1 优化器的作用 2 常用的优化器 Optimizer 3 各种优化器的对比 3 1三种梯度下降法的对比 3 2 SGD 梯度下降 3 3 Momentum 3 4 NAG Nesterov accelerated gradient
  • Windows10系统服务优化及分析(批处理)

    对于Win10来说 除了UI的变动外 微软还根据用户体验做了一些功能的增强和更改 在我看来 Win10本身启动的服务都是为了系统运作更加完美而增加的 但是对于很多人来说 Win10的很多功能很少用 甚至用不到 对于这样的功能如果不关闭的话
  • Java中IO流,输入输出流概述与总结

    总结的很粗糙 以后时间富裕了好好修改一下 1 Java语言定义了许多类专门负责各种方式的输入或者输出 这些类都被放在java io包中 其中 所有输入流类都是抽象类InputStream 字节输入流 或者抽象类Reader 字符输入流 的子
  • 09FMPEG的AVFrame结构体分析

    09FMPEG的AVFrame结构体分析 概述 该结构体位于libavutil库中的frame h中 1 AVFrame结构体 typedef struct AVFrame define AV NUM DATA POINTERS 8 指向图
  • Anaconda环境下的opencv实现人脸检测

    文章内容 本文主要介绍python3 9 Anaconda pytorch Jupyter Opencv安装教程 以及opencv的图片加载以及人脸检测 目录 一 anaconda的安装 二 pytorch的安装 三 Jupyter的配置
  • 订单系统设计 —— 数据同步与监控

    文章目录 一 方案背景 1 1考虑因素 1 2 数据特点 二 增量同步方案 2 1 并发消费 2 2 顺序消费 2 3 1 N关联数据 三 存量同步方案 3 1 并发同步 3 2 基于视图同步 四 监控与补偿机制 4 1 延迟监控 4 2
  • js逆向-ast混淆还原入门案例(1)

    recast资料太少 在大佬的建议下转到babel了 搬运各个地方的案例学习后 分享给大家 也给自己一个记录 案例需2个文件 运行文件1 run js 源码文件1 read js 1 read js var 0x2075 wrw3EMKc
  • 解决Python报错:URLError: <urlopen error [Errno 11004] getaddrinfo failed>

    原因 获取地址信息失败 通常是由于自动选择的DNS服务器不行 解决方法 更换DNS服务器 控制面板 win R control gt 网络和Internet 2 打开网络共享中心 3 打开当前连接的网络 以wifi为例 4 打开属性
  • 网页空间和服务器,服务器内存和网页空间

    服务器内存和网页空间 内容精选 换一换 使用主机迁移服务前 请参考以下步骤准备好账号 权限及源端 目的端服务器环境 已在华为云注册账号 并完成实名认证 已获取账号迁移权限 如果使用账号登录 默认拥有迁移权限 可无需配置迁移权限 如果使用IA
  • R notes (1): lm()

    R notes lm Reference Fitting Linear Models Usage Arguments Details Reference https www rdocumentation org packages stats
  • 2023最新版本Activiti7系列-身份服务

    身份服务 在流程定义中在任务结点的 assignee 固定设置任务负责人 在流程定义时将参与者固定设置在 bpmn 文件中 如果临时任务负责人变更则需要修改流程定义 系统可扩展性差 针对这种情况可以给任务设置多个候选人或者候选人组 可以从候
  • 第三代oid铺码软件_你好点读笔!自制小达人点读目录册之书名贴铺码

    之前跟大家分享了一下关于如何铺码的内容 你好点读笔 自制小达人点读目录册之如何铺码 主要是以铺 内容贴 码为例进行的 今天 我要和大家分享的是和 内容贴 密不可分的 书名贴 铺码的原理和之前内容码铺码原理和步骤基本一致 那么接下来 请随我一
  • 【DDIM加速采样方法】公式推导加代码分析。Denoising Diffusion Implicit Models

    DDIM加速采样方法 公式推导加代码分析 Denoising Diffusion Implicit Models 1 前言 ddim总览 2 均值 mu 3 方差 sigma
  • 华为od机试 java 地址分割

    题目 你的任务是编写一个程序 该程序将接收一个由逗号分隔的字符串 其中包含一个URL的前缀和后缀 然后将它们合并成一个完整的URL 合并规则如下 如果前缀的最后一个字符是斜杠 则删除它 如果后缀的第一个字符是斜杠 则删除它 在处理过的前缀和
  • 待续----serialVersionUID的解释

    serialVersionUID作用 序列化时为了保持版本的兼容性 即在版本升级时反序列化仍保持对象的唯一性 有两种生成方式 一个是默认的1L 比如 private static final long serialVersionUID 1L
  • configtx.yaml中文详解(Hyperledger Fabric 区块链网络运维工具configtxgen的配置文件)

    configtx yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件 configtx yaml的内容直接决定了所生成的创世区块的内容 本文将给出configtx y
  • [899]数值特征-对数据进行log变化

    对于一些标签和特征来说 分布不一定符合正态分布 而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化 使得数据在一定程度上可以符合正态分布 进行log变化 就是对数据使用np log data 1 加上1的目的是
  • Redis下载部署并加入idea应用(详细笔记)

    文章目录 前言 一 下载Window版本的redis 1 打开网址 github上的redis安装包 https github com microsoftarchive redis 找到Redis on Windows 点击 release
  • java stream流常用方法

    Stream流用法 1 分组 2 过滤 3 List map互转 4 求和 极值 5 求最大 最小值的对象 6 去重 7 排序 8 拼接 9 统计 10 平均值 11 某个值的数量 12 分区 13 截断 14 跳过 15 查找与匹配 16