Tag: 数据结构

在JAVA中实现AVL树

我想用Java实现一个AVL树,这是我到目前为止所拥有的: public class AVLNode { private int size; /** The size of the tree. */ private int height; /** The height of the tree. */ private Object key;/** The key of the current node. */ private Object data;/** The data of the current node. */ private Comparator comp;/** The {@link Comparator} used by the node. […]

在Java中创建复杂的HashMap

这样创建HashMap的最简单方法是什么: ( student1 => Map( name => Tim, Scores => Map( math => 10, physics => 20, Computers => 30), place => Miami, ranking => Array(2,8,1,13), ), student2 => Map ( …………… …………… ), ………………………. ………………………. ); 我试过这个: HashMap record = new HashMap(); record.put(“student1”, new HashMap()); record.get(“student1”).put(“name”,”Tim”); record.get(“student1”).put(“Scores”, new HashMap()); 但我得到错误。 我这样做是因为, record.get(“student1”)是一个HashMap对象,所以我假设一个put应该可以工作,依此类推。 如果它不起作用,最好的方法是什么?

Bloomfilter实现

使用Bloomfilter,我们将获得空间优化。 cassandra框架还具有Bloom Filter的实现。 但详细地说,这个空间优化是如何实现的?

寻找成熟的M-Tree实现

我正在寻找一个成熟的Java M-Tree实现 – 甚至是任何M-Tree实现(除了我发现的唯一实现) http://en.wikipedia.org/wiki/M-tree 对于那些没有听说过M-tree的人(就像我2天前那样),M-Tree是一个搜索树,当它使用的密钥时,它可以检索“n-nearest entries”或“distance d内的所有条目”。可以放在“度量空间”中(M代表度量)。 我在网上找到了一个: https : //github.com/erdavila/M-Tree 如果需要,这个实现是可行的,但它不是Serializable,不提供“contains()”方法,并且它当前抛出一个断言错误(我已经弄清楚如何修复)。 如果存在稍微更精细的实现,我想知道,因为这个数据结构看起来非常有用,我想找到一个规范的实现。 —添加了更多信息(为了防止这个问题被关闭)— 我的最终目标是一个Map,其中“public Value get(Key)”方法返回“最接近”的值,即使没有精确的Key匹配。 因为我正在使用在度量空间上定义的键,我正在寻找MTree来处理此问题的“最接近”部分。 上面的实现是行不通的,因为(1)当相同的Key被放入两次时失败,(2)它不允许我删除一个Key,(3)它不允许我测试如果已插入密钥。

具有高效添加,删除和随机的Java数据结构

我需要一个Java数据结构,我可以有效地添加,删除和访问随机对象。 这是不起作用的: ArrayList具有高效的添加(常量时间)和随机访问(只是“获取”随机整数),但删除可能需要线性时间,因为它必须可能搜索整个列表。 TreeSet或HashSet具有高效的添加和删除function,但我无法弄清楚如何获取随机对象。 有任何想法吗? 从理论上讲,如果我可以使用随机Lefts或Rights自己遍历树,那么B树就可以工作了,但我不认为标准的Java类能给我这种能力。 如果标准Java类中没有任何内容可以使用,我愿意使用第三方库。 我不需要支持重复或空值,也不需要线程安全。 谢谢。

基于空间代理的建模的数据结构

在二维空间模拟中跟踪代理的一些好的数据结构是什么? 我已经看到一些对四叉树(我理解)和kd树(我不太了解)的引用。 我正在寻找一个代理人可以有效地说出的话,“我知道我的位置,而且我想知道哪些代理人在我附近(在我自己的某个半径范围内)。” 非常感谢示例(伪代码很好)。 我在Java工作。

用于存储单词列表的节省空间的数据结构?

对于这种情况,还有比Trie更好的东西吗? 存储~100k英文单词列表 需要使用最少的内存 查找需要合理,但不必快速闪电 我正在使用Java,所以我的第一次尝试就是使用Set 。 但是,我的目标是移动设备并且内存不足。 由于许多英语单词共享共同的前缀,trie似乎是一个体面的赌注,以节省一些记忆 – 任何人都知道一些其他好的选择? 编辑 – 更多信息 – 数据结构将用于两个操作 回答:列表中是否有XYZ字样? 生成XYZ周围的单词邻域,其中一个字母不同 谢谢你的好建议

用Java构造二叉树

我正在构建一个二叉树。 如果这是一种正确的方法,请告诉我。 如果没有请告诉我如何? 我找不到构建一般二叉树的正确链接。 BST到处都是编码的。 3 / \ 1 4 / \ 2 5 这是我想要制作的二叉树。我应该能够完成所有的树遍历。简单的东西。 public class Binarytreenode { public Binarytreenode left; public Binarytreenode right; public int data; public Binarytreenode(int data) { this.data=data; } public void printNode() { System.out.println(data); } public static void main(String ar[]) { Binarytreenode root = new Binarytreenode(3); Binarytreenode n1 = new […]

提高模糊字符串匹配字典的性能

所以我目前正致力于使用SecondString进行模糊字符串匹配,其中我有一个要比较的大字典(字典中的每个条目都有一个关联的非唯一标识符)。 我目前正在使用hashMap来存储这个字典。 当我想进行模糊字符串匹配时,我首先检查字符串是否在hashMap中,然后迭代所有其他可能的键,计算字符串相似性并存储具有最高相似度的k,v对/ s 。 根据我使用的字典,这可能需要很长时间(12330 – 1800035条目)。 有没有办法加快速度或加快速度? 我目前正在编写一个记忆function/表格来加快速度,但其他人是否可以想出一种更好的方法来提高速度呢? 也许是一个不同的结构或其他我想念的东西。 提前谢谢了, 弥敦道

ConcurrentLinkedDeque与LinkedBlockingDeque

我需要一个线程安全的LIFO结构,并发现我可以使用Deque线程安全实现。 Java 7引入了ConcurrentLinkedDeque ,Java 6引入了LinkedBlockingDeque 。 如果我只使用addFirst()的非阻塞方法,例如addFirst()和removeFirst() ,它与ConcurrentLinkedDeque有什么区别吗? 即如果你忽略阻塞方面,除了LinkedBlockingDeque有界之外, ConcurrentLinkedDeque和LinkedBlockingDeque之间是否还有其他区别?