Tag: 数据结构

java是否具有像c ++ STL中那样的多集数据结构?

我需要一个像STL multiset一样工作的数据结构,但Java中的TreeSet不允许重复元素。 Java中是否有内置的数据结构,相当于multiset?

在Java中阻塞队列有什么好处?

我正在开发一个项目,该项目使用一个队列来保存有关需要发送到远程主机的消息的信息。 在这种情况下,一个线程负责将信息放入队列,另一个线程负责从队列中获取信息并发送它。 第二个线程需要定期检查队列中的信息。 但后来我发现这是轮子的重新发明:)我可以使用阻塞队列来达到这个目的。 在上述应用程序中使用阻塞队列有哪些其他优点? (例如:性能,代码可修改,任何特殊技巧等)

Java列表,在我添加元素时自动对元素进行排序

可能重复: 在java中排序的集合 我想知道Java中是否有一个内置类可以让我添加自动排序的元素。 如果两个元素的排名相同,则排序应保留添加顺序。 我认为这将像一个优先级队列,但不应该“弹出”元素,我希望他们留在列表中。 显然我可以自己实现这个,但我宁愿使用Java语言实现的东西(更少的bug测试/对未来的项目也很好,而不是导入我自己的代码)。 如果在语言中没有这样的东西,我也会对第三方来源感兴趣。

使用QuadTree获取边界圆内的所有点

我有一套100到200点(x,y)。 我必须检查哪些落在其他人的特定距离内。 整个程序的特定距离是固定的,例如50.假设点1落在点5,7,25,90,96,105等的范围内。 类似地,点2落在23,45等范围内…… 存储用于通过x,y坐标定位的对象 这里建议使用QuadTree,但它可用于获取边界矩形内的所有点。 但是如何获得一个边界内的所有点? 有一种方法可以在最大距离内返回最接近纬度/经度的点,但是如何获得距离内的所有点? http://openmap.bbn.com/doc/api/com/bbn/openmap/util/quadtree/QuadTree.html#QuadTree(float,love,float,float,int) 一种方法可能是在我得到它时从树中删除每个点,然后再次查询最近的点,直到我得到null。 这是唯一的方法吗?

java.util.Stack的Iterator中是否有错误?

今天我试图推入java.util.Stack类,然后使用Iterator迭代(不使用pop)项目。 我期待着LIFO的财产,但很惊讶。 这是我正在尝试的代码。 import java.util.*; import java.util.Stack; public class Main { public static void main(String[] args) { RobStack rstack = new RobStack(); // Correct Implementation Stack jstack = new Stack(); // Default Java Implementation rstack.push(0); jstack.push(0); rstack.push(1); jstack.push(1); rstack.push(2); jstack.push(2); rstack.push(3); jstack.push(3); System.out.print(“Algo Stack: “); for (int i : rstack) System.out.print(i + ” “); System.out.print(“\nJava […]

性能方面,番石榴图书馆有多好?

我已经浏览了Google Guava库,并在其中创建了许多优秀,可用的数据结构。 如果有其他人使用过它,那么你可以提供有关它与大数据集一起使用时的表现的反馈吗? 基本上我正在为其运营寻找BigO表示法。 提前致谢

为什么哈希表通过加倍来resize?

在线检查java和google搜索哈希表代码示例,似乎通过加倍来完成表的大小调整。 但是大多数教科书都说桌子的最佳尺寸是素数。 所以我的问题是: 加倍的方法是因为: 它易于实现,或 找到素数太低效了(但我认为找到下一个素数超过n+=2并使用模数测试素数是O(loglogN)这很便宜) 或者这是我的误解,只有某些散列表变体只需要主表大小? 更新: 某些属性需要使用素数在教科书中呈现的方式(例如,二次探测需要一个素数表来certificate,例如,如果一个表不是完整的项目X将被插入)。 发布为重复的链接一般要求增加任何数字,例如25%或下一个素数,并且接受的答案表明我们加倍以使resize操作“罕见”,因此我们可以保证摊销时间。 这并没有回答这样一个问题:使用一个表格大小是素数并且使用素数来resize甚至大于两倍。 因此,我们的想法是保持主要大小的属性考虑resize开销

Java中Btree或B +树的现有实现

我正在做一个我需要btree或b + tree数据结构的项目。 有谁知道btree或b + tree的现有实现(带插入,删除,搜索算法)? 它应该接受字符串作为输入并形成这些字符串的btree或b + tree。

如何使用树找到最长的常见子串?

根据wiki的最长公共子串问题可以使用后缀树来解决。 来自维基 : 可以通过为字符串构建一个通用后缀树,然后找到最深的内部节点来找到一组字符串中最长的公共子字符串,这些节点具有来自其下面子树中所有字符串的叶节点 我不懂。 示例:如果我有: ABCDE和XABCZ 那么后缀树是(由于空格而省略了XABCZ一些分支): 最长的公共子字符串是ABC但我不知道wiki的描述在这里有什么帮助。 ABC不是具有叶节点的最深的内部节点。 任何帮助,以了解这是如何工作的?

链表的“头”是什么?

我正在使用Java链接列表,所以我试图掌握单个链表的概念。 head -> 12 -> 34 -> 56 -> null head.next将是12(也与node1相同)。 然而,什么是头呢? 更新:引用和指针之间有什么区别? Update2:所以如果head是12并且head.next是34 ,那么这并不意味着这个跟随函数会跳过第一个节点以查看它是否为null? public void add(Object data, int index) // post: inserts the specified element at the specified position in this list. { Node temp = new Node(data); Node current = head; // crawl to the requested index or the last element in […]