是否有一种 Java 数据结构实际上是具有双索引和内置插值的 ArrayList?

2024-04-28

我正在寻找具有以下特征的预构建 Java 数据结构:

  1. 它应该看起来像 ArrayList,但应该允许通过双精度而不是整数进行索引。请注意,这意味着您可能会看到与原始数据点不相符的索引(即询问与键“1.5”对应的值)。EDIT:为了清楚起见,根据评论,我不打算changeArrayList 的实现。我正在寻找类似的界面和开发人员体验。

  2. 因此,返回的值可能会被插值。例如,如果键为 1.5,则返回的值可能是键 1.0 处的值和键 2.0 处的值的平均值。

  3. 键将被排序,但值不能保证单调递增。事实上,无法保证值的一阶导数是连续的(使其不太适合某些类型的样条线)。

  4. 请仅提供免费代码。

为了清楚起见,我知道如何写这样的东西。事实上,我们已经在遗留代码中实现了这个和一些相关的数据结构,由于一些性能和编码问题,我想替换它们。

我试图避免的是花费大量时间来滚动我自己的解决方案,而此时可能已经存在这样的事情了JDK http://java.sun.com/javase/6/docs/api/index.html?overview-summary.html, 阿帕奇共享区 http://commons.apache.org/或另一个标准库。坦率地说,这正是使这些遗留代码陷入现在困境的方法......

免费图书馆里有这样的东西吗?


允许double作为索引的值是相当大的变化从何而来ArrayList does.

这样做的原因是数组或列表double因为根据定义,指数几乎是稀疏数组 http://en.wikipedia.org/wiki/Sparse_array,这意味着它对于几乎所有可能的索引都没有值(或者取决于您的定义:固定的已知值),并且只有有限数量的索引具有显式值集。

Java SE 中没有预构建的类支持所有这些。

就我个人而言,我会实现这样一个数据结构:跳过列表 http://en.wikipedia.org/wiki/Skip_list(或类似的快速搜索数据结构)(index, value)具有适当插值的元组。

Edit:实际上,后端存储有一个非常好的匹配(即除了插值之外的所有内容):只需使用NavigableMap http://java.sun.com/javase/6/docs/api/java/util/NavigableMap.html比如一个TreeMap http://java.sun.com/javase/6/docs/api/java/util/TreeMap.html存储从索引到值的映射。

这样你就可以轻松使用ceilingEntry() http://java.sun.com/javase/6/docs/api/java/util/NavigableMap.html#ceilingEntry(K)和(如果需要)higherEntry() http://java.sun.com/javase/6/docs/api/java/util/NavigableMap.html#higherEntry(K)获取最接近您需要的索引的值,然后从中进行插值。

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

是否有一种 Java 数据结构实际上是具有双索引和内置插值的 ArrayList? 的相关文章

随机推荐

  • 放弃root权限

    我有一个以 root 身份启动的守护进程 因此它可以绑定到低端口 出于安全原因 初始化后我非常希望它放弃 root 权限 谁能指点我已知正确C 中的一段代码可以做到这一点 我阅读了手册页 研究了不同应用程序中的各种实现 它们都是不同的 其中
  • Chrome消息传递错误:尝试使用断开连接的端口对象

    我的 Chrome 扩展使用长期存在的 端口 对象在 内容脚本 和 弹出 页面之间传递消息 弹出窗口 能够向 内容脚本 事件监听器发送消息 但是 内容脚本 中的 端口 对象无法将消息发送到 弹出 页面 var port chrome ext
  • 在 AngularJS 中的控制器之间共享数据

    我学习了如何在控制器之间共享数据 但遇到了一些问题 我有这样的html视图 div div div div
  • Jmeter 下降的最佳方法?

    我们都知道 Jmeter 并不是最擅长在运行期间更改活动线程的数量 除非您喜欢并创建以不同时间间隔触发的单独线程组 有没有人想出一个好的解决方案来在测试结束时降低速度 例如 我从 50 个线程开始 在 30 分钟内我想要 0 个活动线程 查
  • 使用不同时区的 POSIXct 到数字

    我想我一定不明白 POSIXct 是如何工作的 或者什么的 据我了解 它是自纪元以来的秒数 纪元是标准时间 例如 1970 01 01 GMT 我取两个 POSIXct 时间 一个在 EST 一个在 PST 它们是相同的绝对时间 然而 当我
  • 用于搜索内部文件的 ssh 命令

    几周前 我的两个网站可能被 ftp 暴力攻击所利用 破坏了我网站的许多文件 我发现他们通常会在js或php文件中插入以下代码 Trojan code removed as irrelevant to this question 我想通过 s
  • AWS Glue 爬网程序更改 serde

    我有带引号字符串的 csv 默认情况下爬虫会使用 LazySimpleSerde 注册该表 无论如何 我可以通过编程方式更改它以使用 OpenCSVSerde 吗 您可以使用 boto3 它是一个 aws sdk 您可以使用 python
  • 如何在 Docker 容器内动态添加 Jenkins 用户和权限

    当我为 python 项目构建声明式 Jenkins 管道时 使用 Pip 时收到以下错误消息 WARNING The directory cache pip or its parent directory is not owned or
  • Chart.js 刻度线和 X 轴之间的空间

    我正在使用 Chart js 版本 3 x 制作一个简单的画布 它只是显示价格的演变 X 轴用于时间 Y 轴用于进化百分比 我已经成功做到了这一点 但现在 我想添加一些风格 我的目标是在标记刻度和 X 轴之间添加一些空间 我用过chart
  • 无法打开 mysql-workbench

    我开始使用 mysql 但无法打开 mysql workbench 当我尝试通过 ubuntu 命令行打开它时 出现以下错误 usr lib mysql workbench mysql workbench bin 符号查找错误 usr li
  • NodeJS 的续集:支持这些功能吗?

    以下是关于sequelize支持的功能的一些问题 续集项目网站 http sequelizejs com 在决定是否使用它之前我想澄清一下 链接 效率 当链接多个查询时 这些查询是收集到对数据库的一个请求中 作为一批操作 还是每个请求单独发
  • fs.readFileSync 不是文件相关的? Node.js

    假设我的项目根目录下有一个名为file xml 假设我在tests 中有一个名为 test js 的测试文件 它有 const file fs readFileSync file xml 如果我现在跑步node tests test js从
  • 以编程方式强制 Cocoa 应用程序以 32 位模式启动

    我有一个 Cocoa 应用程序 通常在任何支持此架构的 Mac 上以完整 64 位模式运行 现在我有一个外部 API 只能作为 32 位插件加载到主程序中 该 API 适用于第三方输入设备 只有一小部分用户会购买该设备 但这对于那一小部分用
  • wpf 多重绑定到视图模型?

    如何向 xaml 中的多个视图模型对象添加多重绑定 我需要绑定IsEnabled上下文菜单的属性为我的视图模型中的两个整数 以下绑定不起作用 因为它是为 GUI 组件设计的 我该如何做才能与我的ints一起工作
  • 获取给定月份的所有日期和日期

    想要检索给定月份的所有日期和日期 目前有这个显示当月的所有天数 但我如何解析指定的月份 list array for d 1 d lt 31 d time mktime 12 0 0 date m d date Y if date m ti
  • Spring Boot可执行jar结构

    我正在尝试运行 Spring Boot 示例应用程序 我在 webapp 文件夹下的 images 文件夹中添加了几张图像 与 WEB INF 同一级别 我创建了可执行 jar 这些图像在网页上正确显示 但是 我很困惑 可执行 jar 中的
  • 如何导出 WAS 6.1 服务器配置

    有没有一种方法可以从 WAS 在 RAD 6 下运行 导出我的服务器设置 以便其他开发人员能够使用相同的脚本来设置他们的环境 要手动执行此操作 请在RAD 6 x 只需右键单击 服务器 视图中的服务器名称并选择以下选项之一 Export s
  • 文件在 rpm 规范文件中列出两次

    我的规范文件的文件部分如下所示 files prefix htdocs config prefix htdocs share settings config inc php 现在 由于配置文件已经包含在 prefix htdocs 我收到警
  • 如何更新反卷积层的权重?

    我正在尝试开发一个反卷积层 或者准确地说是转置卷积层 在前向传递中 我进行了完全卷积 零填充卷积 在向后传递中 我进行有效的卷积 没有填充的卷积 以将错误传递到前一层 偏差的梯度很容易计算 只需对多余维度进行平均即可 问题是我不知道如何更新
  • 是否有一种 Java 数据结构实际上是具有双索引和内置插值的 ArrayList?

    我正在寻找具有以下特征的预构建 Java 数据结构 它应该看起来像 ArrayList 但应该允许通过双精度而不是整数进行索引 请注意 这意味着您可能会看到与原始数据点不相符的索引 即询问与键 1 5 对应的值 EDIT 为了清楚起见 根据