返回资讯中心
外部精选
软件工程
#开发者实时流

JArray:融合动态数组与多维操作的新型 Java 数据结构

来源标题:JArray

JArray 发布,是一款兼顾动态数组、原生类型存储、混合数据类型和多维数组操作的 Java 数据结构。它支持直接存储 int、float、double 等原生类型而无需装箱,并提供动态增删、切片、重塑和视图等能力。项目方表示其目标并非取代现有 Java 集合,而是为需要更精细控制数据存储与访问的开发者提供额外工具。

Hacker News 最新fishybusinessde2026/11/12 · 今天13 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

JArray 是一个灵活的 Java 数据结构,将动态数组、原始类型存储、混合数据类型和多维数组操作融为一体。 它的构建目标是在不牺牲性能的前提下,让数据处理更加灵活。 在集合操作方面,Java 为开发者提供了两种常见选择: 它既具备动态可调整大小集合的便利性,又提供了原始类型的专用存储。同时,它还超越了传统列表的范畴,支持多维数组、切片、重塑和视图。 这个项目的目的并不是要取代所有 Java 集合,而是为那些需要对数据存储和访问方式拥有更多控制权的开发者提供另一种工具。 原始类型优先存储:直接存储整数、浮点数、双精度数和其他原始类型,无需为每个元素使用包装对象。 动态大小调整:添加、插入和删除元素时无需手动管理数组容量。 混合类型支持:可以在同一个 JArray 中存储不同的数据类型。 多维数组:跨多个维度组织数据。 视图:通过替代的形状和布局访问现有数据,而无需进行不必要的复制。 灵活操作:支持切片、重塑、转置、展平、搜索、复制、反转等功能。 功能特性 功能 描述 动态数组 添加元素时自动调整大小 原始类型存储 为原始类型提供专用底层数组 混合类型 组合不同的数据类型 多维数组 支持多个维度 视图 访问现有存储而无需不必要的复制 切片 提取数组的部分内容 重塑 更改数组维度 转置 重新排列多维布局 搜索 查找元素并统计出现次数 操作 插入、删除、交换、反转和填充 迭代 使用 Java 迭代方式处理元素 性能 JArray 在设计时充分考虑了性能和内存效率。 这使得 JArray 在处理同构原始类型数据时能够避免不必要的开销,同时保留对异构数组的支持。 以下结果来自 JArray 的基准测试套件,将其与 Java 标准 ArrayList 进行了对比。 图表展示的是相对性能。数值高于 1.0 表示 JArray 更快;低于 1.0 表示 ArrayList 更快。 xychart-beta title "JArray 相比 ArrayList 的加速比" x-axis ["预分配", "增长", "随机", "设置", "搜索", "复制", "插入", "混合"] y-axis "加速比 (x)" 0 --> 6.5 bar [1.83, 1.56, 3.06, 1.26, 5.97, 1.16, 0.93, 0.71] 加载中 实际基准测试耗时 迭代结果按基准测试报告的原样收录,但其归一化的逐元素耗时仍需进一步验证。 JArray 并非在所有场景下都更快。在此测试中,ArrayList 目前在混合类型插入和中间插入/删除方面具有优势。 关键结论是,JArray 在某些工作负载下可以提供显著优势,尤其是在处理同构原始类型数据时。 同一基准测试套件的近似堆内存测量结果: 在此测试中,当元素数量达到一百万时,JArray 使用的内存减少了约 72%。 这些测量结果是近似堆内存增量,而非精确的对象大小测量。结果可能因 JVM 实现、工作负载和运行时条件而异。 结果使用自定义基准测试框架收集,包含预热轮次和重复测量。 报告的耗时采用中位数测量值。 设置时间不计入操作耗时。 内存测量为近似值。 结果取决于工作负载和机器环境,并非通用的性能保证。 快速开始 环境要求 Java 开发工具包(JDK 17 或更高版本) 从源码构建 克隆仓库: git clone https://github.com/AJ-1-code/JArray.git cd JArray 构建项目: ./gradlew build 安装 JArray 可通过 JitPack 获取,并计划发布至 Maven Central。 repositories { mavenCentral() maven { url 'https://jitpack.io' } dependencies { implementation 'com.github.AJ-1-code:JArray:1.0.0' Gradle(Kotlin DSL) repositories { mavenCentral() maven("https://jitpack.io") dependencies { implementation("com.github.AJ-1-code:JArray:1.0.0") Maven Central 发布已列入计划。 首个构件发布后,JArray 将通过标准 Maven Central 仓库提供。 发布完成后,官方 group ID 和依赖坐标将在此处列出。 import jarray.JArray; public class Example { public static void main(String[] args) { // 创建一个动态数组 JArray numbers = new JArray(); // 添加元素 numbers.add(10); numbers.add(20); numbers.add(30); // 获取元素 System.out.println(numbers.get(1)); // 修改元素 numbers.set(99, 1); // 插入元素 numbers.insert(1, 15); // 删除元素 numbers.removeAt(0); System.out.println(numbers); 项目状态 JArray 正在准备首次公开发布。 欢迎提交 bug 报告、建议和贡献。如果您发现问题或有改进该库的想法,请随时提交 issue 或 pull request。 JArray 基于 MIT 许可证发布。详情请参阅 LICENSE。 JArray —— 为 Java 打造的灵活数据结构。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →