java - 需要一个 Java TreeMap<Integer, Character> 的快速替代品,它可以在不降低速度的情况下容纳许多映射

标签 java object primitive treemap sorting

我正在编写一个使用 TreeMap 的 Java 程序,一旦有成千上万的整数、字符映射,性能就会降低到爬行速度。

我想知道是否存在某种类型的排序集实现的实现,它可以使用 int 和 char 原语并具有类似于“headMap”和“tailMap”函数的东西。

我目前正在关注 Trove。我还查看了使用插入排序但不包括头函数和尾函数的链表的实现。不过,我认为带有插入排序的链表会比树慢,不是吗?

最佳答案

如果您正在寻找类似 TreeMap<Integer,Character> 的替代品如果您的整数键很密集,那么数组将是最有效的。但它会是一个 char[]而不是 int[]因为你想查找 char取决于 int - key 。 然后我读了一些关于“基因组”的东西?!假设您想使用 char代表 Adenin、Guanin、Cytosin 和 Thymin(我不是这方面的专家)请记住 char每个需要你 16 位 - 远远超过你需要的四个不同的东西。也许你可以做类似的事情

...
public static final byte UNDEF = (byte)-1;
public static final byte ADENIN = 0;
public static final byte GUANIN = 1;
public static final byte CYTOSIN = 2;
public static final byte THYMIN = 3;
...
private byte[] genome = new byte[ 26000000 ]; // or which size ever
...

如果这仍然占用太多内存,它就会变得棘手:假设您不需要 UNDEF value 你只需要 2 位来表示四个值,即一个可以存储你的序列,每个字节有四个值,最终需要大约 6.5 MB。但是对于这样的事情你需要做一些小 Action ......

关于java - 需要一个 Java TreeMap<Integer, Character> 的快速替代品,它可以在不降低速度的情况下容纳许多映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678043/

相关文章:

java - 使用 Java 列出 wsdl url 中的所有操作(请求)

java - 如何将 Text 对象居中到 JavaFX Stage 的正中心?

java - 将一个对象的 ArrayList 内容传输到另一个对象

c - 如何更改已编译二进制文件的 lib 版本

javascript - 为什么 Javascript 不遵循关于 Infinity/NaN 比较的 ECMA 规范?

java - 如何使用pdfbox获取PDF表单文本域的内容?

java - 按下按钮时重复任务(从适配器)

Java 的原语上的 volatile

java - CopyOnWriteArrayList 仅适用于迭代,不适用于随机访问读取

JavaFX:在 SimpleIntegerProperty 中存储 null