Function.identity()

在Java 8中,Function.identity()是java.util.function.Function接口的一个实用工具方法,以下是核心要点:

一、定义与作用
▸ 身份转换函数 返回一个 Function<T, T> 对象,其行为等价于 t -> t 的Lambda表达式 ▸ 代码可读性 语义上明确表示"不做任何转换"的操作意图

二、典型使用场景

  1. Stream操作中的占位符
// 示例:统计字符串出现次数(保留原对象)
List<String> list = Arrays.asList("apple", "banana", "apple");
Map<String, Long> countMap = list.stream()
    .collect(Collectors.groupingBy(
        Function.identity(),  // 直接使用元素本身作为key
        Collectors.counting()
    ));
// 输出:{banana=1, apple=2}
  1. 需要Function参数的API
// 示例:转换Map结构
Map<Integer, String> original = Map.of(1, "A", 2, "B");

// 保持键值不变
Map<Integer, String> copied = original.entrySet().stream()
    .collect(Collectors.toMap(
        Map.Entry::getKey,          // Key映射
        entry -> entry.getValue()   // 等价于 Function.identity()
    ));

三、与Lambda表达式的等价性


图片.png

四、注意事项
空值处理 当输入为null时,会直接返回null(可能引发NPE)
类型推断 在复杂泛型场景中可能需要显式指定类型:

// 需要类型提示的情况
Function.<String>identity().apply("test");
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Function.identity()是什么? Function是一个接口,那么Function.identity...
    不知名的蛋挞阅读 64,555评论 1 36
  • 偶然之间发现的这个函数,感觉还是很有用的,尤其实在返回map的时候,value还为本身,用起来就很方便。Java ...
    以利亚噻阅读 2,665评论 0 0
  • Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上...
    lenmpeng阅读 566评论 0 0
  • 拥抱新时代的Java[http://toughcoder.net/blog/2022/01/17/develop-...
    alexhilton阅读 170评论 0 1
  • 1、什么是Stream Java 8之前的集合类库主要依赖于 外部迭代(external iteration)。 ...
    冰河winner阅读 584评论 0 0

友情链接更多精彩内容