首页 > 编程语言 >java lambda filter实现元素过滤与变量作用域、生命周期

java lambda filter实现元素过滤与变量作用域、生命周期

时间:2023-07-19 23:56:01浏览次数:34  
标签:ConcurrentHashMap java 变量 作用域 filter keySet 过滤 import

最开始只是拿来用,后来调试研究了一下。

解释:2 传递的是对象,对象中包含 keySet 变量,每次调用都是这个对象里面的 keySet 变量。
而 1 每次都是创建了一个新的对象,keySet 自然不同,也就不能实现过滤了

import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;

class Scratch {
    public static void main(String[] args) {
        Stream.generate(() -> 1)
                .limit(25)
//                .distinct()
                .filter(i -> {
                    ConcurrentHashMap.KeySetView<Object, Boolean> keySet = ConcurrentHashMap.newKeySet();
                    return keySet.add(i);
                })// 1. 此处过滤无用
                .filter(distinctByKey(Function.identity()))// 2. 此处过滤有用,原因就是两个 keySet 变量的作用域与生命周期不同
                .forEach(System.out::println);

        // 解释:2 传递的是对象,对象中包含 keySet 变量,每次调用都是这个对象里面的 keySet 变量。
        // 而 1 每次都是创建了一个新的对象,keySet 自然不同,也就不能实现过滤了

        System.out.println(distinctByKey(t -> 1));
    }

    static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        ConcurrentHashMap.KeySetView<Object, Boolean> keySet = ConcurrentHashMap.newKeySet();
        return t -> keySet.add(keyExtractor.apply(t));
    }
}

标签:ConcurrentHashMap,java,变量,作用域,filter,keySet,过滤,import
From: https://www.cnblogs.com/pong137/p/17567113.html

相关文章

  • Java随笔
    2023.07.19关于java当中size和length的使用,在工作当中,没有对size和length有一个明确的概念,总是能.出来哪一个就用哪一个。1/**2*.length是数组的基本属性.3*.size()是集合的方法,集合是一个容器,用长度来形容不合适.4*.length()是字符串的方法,用于统计字符串......
  • jacoco+ant 构建java覆盖率
    所需工具:JacocoAnt2020.5.26:踩坑报错Unabletodumpcoveragedata,经过查证修改后发现为tomcat需用tomcat自带startup.bat启动,用eclipse启动仿佛插件无效。 Tomcat修改setJAVA_OPTS="-javaagent:[yourPath/]jacocoagent.jar=includes=com.companyName.*,output=tcpserv......
  • 一维资源分配问题(java实现)
    一维资源分配1.问题介绍设有总量为a的某种原料,用于生产n种产品。假设用于生产第k种产品生产的数量为\(x_k\),并获得收益\(\varphi(x_k)\),问应该如何分配n种产品的资源使用量使得总收益最大。2.Solution\(k\):生产第k种产品的决策阶段;\(x_k\):投入到第k种产品生产的资......
  • 用java代码实现部门表,用户表的对应关系,把用户放到对应的部门下面
    实现如下所示: importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***@author王立朝*@date2023/7/19*@description:*/publicclassTest2{publicstaticvoidmain(String[]args){//创建......
  • JavaScript学习笔记01(包含ES6语法)
    Js简介什么是Js?Js最初被创建的目的是“使网页更生动”。Js写出来的程序被称为脚本,Js是一门脚本语言。被直接写在网页的HTML中,在页面加载的时候自动执行脚本被以纯文本的形式提供和执行,不需要特殊的准备或编译即可运行(JINcompiler)Js不仅可以在浏览器中执行,也可以......
  • 【Azure Function App】Java Function部署到Azure后出现中文显示乱码问题
    问题描述JavaFunction在Azure上遇见中文显示乱码问题?如何解决呢? 问题解答中文字符显示为乱码,这个情况就是服务实例上设置的编码格式不是统一的UTF-8所导致的。在查看AzureAppService/FunctionApp的官方文档,都没有明确的说明它们使用的默认编码是什么,通过询问ChatGPT-4,也没有得......
  • Java基础语法(一)
    一、基本数据类型和String数据类型之间的运算(==注意:String是一个类,故而为引用数据类型==):1、String类的基本使用如下: Stringname="Wangyz"; System.out.println(name); //定义一个空的字符串 StringnullStr="";注意:String类和基本数据类型之间进行运算时只能进行连......
  • 【Azure Function App】Java Function部署到Azure后出现中文显示乱码问题
    问题描述JavaFunction在Azure上遇见中文显示乱码问题?如何解决呢? 问题解答中文字符显示为乱码,这个情况就是服务实例上设置的编码格式不是统一的UTF-8所导致的。在查看AzureAppService/FunctionApp的官方文档,都没有明确的说明它们使用的默认编码是什么,通过询问ChatGPT-4,也......
  • 根据表格生成java实体
    根据表格生成Java实体类在Java编程中,我们经常会遇到需要将表格中的数据映射到实体类的情况。这里我们来介绍一种常用的方法,即根据表格生成Java实体类。在开始之前,我们先来看一下表格的结构示例:字段名类型描述idint主键IDnameString姓名ageint年龄gende......
  • 根据url下载文件java后端
    根据URL下载文件的Java后端在开发Web应用程序时,经常需要从URL下载文件。Java后端使用URL连接和输入流可以轻松地实现文件下载功能。本文将介绍如何使用Java后端根据URL下载文件,并提供相应的代码示例。1.使用URL连接获取文件输入流使用Java的java.net包提供的URL类可以方便地与U......