需要快速替代Java TreeMap,它可以容纳许多映射而不会减速

我正在编写一个使用TreeMap的Java程序,一旦有数十万个整数字符映射,性能就会慢下来爬行.

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

我现在正在看Trove.我还查看了一个使用插入排序但不包括head和tail函数的链表的实现.我认为带有插入排序的链表比树慢,但不是吗?

解决方法:

如果您正在寻找像TreeMap< Integer,Character>这样的替代品.如果您的整数键是密集的,那么数组将是最有效的.但它是一个char []而不是int [],因为你想在int-key上查找chardepending.
然后我读了一些关于’基因组’的东西?!假设你想使用char来代表Adenin,Guanin,Cytosin和Thymin(我不是那么专家)记住,每个char需要16位 – 远远超过你需要的四种不同的东西.也许你可以做像somenthing一样

...
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值,您只需要2位用于四个值,即一个可以存储您的序列,每个字节有四个值,最终需要约6.5 MB.但是对于这样的事情,你需要做一些小小的事情……

上一篇:对比Hashtable,HashMap,TreeMap,谈谈对HashMap的理解


下一篇:Map接口概述(HashMap,TreeMap)