JDK26中的List.ofLazy()

前言

List.ofLazy() 是 Java 26 中作为预览特性 引入的一个静态工厂方法,用于创建一个惰性计算列表

List.ofLazy()使用

java 复制代码
import java.util.List;

public class ListOfLazyDemo {

    static void main() {
        List<Integer> list = List.ofLazy(10, i -> i + 1);
        System.out.println(list);
    }
}

输出结果为

特点

核心特性

  • 按需计算 :列表创建时并不会调用 computingFunction。只有当首次调用 list.get(i) 访问某个索引时,才会计算该位置的值
  • 线程安全:即使在并发访问下,每个元素的计算也保证"至多发生一次"
  • 不可修改:返回的列表是不可变的,不支持修改操作
  • 惰性常量优化 :如果该列表本身被存储在 final 字段中,JVM 可以对已计算的值进行常量折叠优化,后续访问速度接近 final 常量-5-9。
  • 越界处理 :访问 -1 或 size() 及以上的索引会抛出 IndexOutOfBoundsException
  • 递归保护 :如果计算函数通过返回的列表递归调用自身(访问同一索引),会抛出 IllegalStateException

特点

java 复制代码
package cn.com.ut.jdk27;

import java.util.List;

public class ListOfLazyDemo {

    static void main() {
        List<Integer> list = List.ofLazy(10, i -> i + 1);
        System.out.println(list);
        list.add(3);
    }
}

输出

总结

但是目前该特性是在JDK26属于预览属性,编译和运行都需要开启预览标志,可以试试

相关推荐
释厄6232 分钟前
矢量词汇向下不向上公理即词汇归位定律——肤浅即表面
java·人工智能·算法·去中心化·1024程序员节
海绵宝宝转agent8 分钟前
Leetcode100+面经
java·笔记·学习·算法·leetcode·深度优先
会编程的吕洞宾11 分钟前
Spring Boot 镜像瘦身实战:从 450MB 瘦到 180MB
java·后端·spring
Shaoshing13 分钟前
LeetCode100 283.移动零
java·数据结构·算法·leetcode
海绵宝宝转agent14 分钟前
LeetCode100个人题解+java面经总结
java·开发语言·笔记·学习·算法
文丑颜不良啊16 分钟前
LeetCode1201~1220题目解析
java·leetcode
香蕉大香蕉(06敬畏市场)18 分钟前
高频八股 · JVM(7):方法区、元空间与字符串常量池
java·jvm·ai·博客·八股·大厂实习
LazyHunter922 分钟前
Spring Boot 3 微服务实践指南
java·spring boot
zzu123zsw26 分钟前
从 SPI 契约到独立 ClassLoader 隔离:Spring Boot 插件热插拔架构设计与内存泄露防御
java·spring boot·后端·架构设计
文丑颜不良啊27 分钟前
LeetCode1161~1180题目解析
java·leetcode