问题标签 [treeset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Java 中将 TreeSet contains() 与整数一起使用
contains() 方法不能按我预期的方式工作,即比较整数!输出为 15 ,当正常工作时应该为 9 ,
if(processed.contains(h1)==false)
当元素已经存在时返回 true !
代码可能在哪里出错?
java - 如何在 TreeSet 中查找元素的排名
我知道您可以在树集中找到第一个和最后一个元素。如果我想知道第二个或第三个元素是什么而不进行迭代怎么办?或者,更可取的是,给定一个元素,找出它在树集中的排名。
谢谢
编辑:我认为你可以使用 tailset 来做到这一点,即。将原始集的大小与尾集的大小进行比较。tailset 的效率如何?
java - 对 TreeSet 中的元素进行排名
我知道java树集不能有相同的元素,所以我必须以某种方式将一个元素与另一个元素区分开来,即使它们具有相同的“值”。我希望能够对元素进行排名,并且我注意到一个有趣的行为。
这是输出:
这是耳机应该做的:
我按降序排序,所以我认为它应该做相反的事情。第一个元素没有什么比它大,所以它返回 0,然后我加 1 来获得它的排名。第二个元素有一个比它大的东西,所以我认为它应该返回 1,加 1 等于 2。这有点奇怪。我想我犯了一个简单的错误。我还需要弄清楚如何处理这两个 20 年代。我希望他们的排名都是 3,但树集认为他们是不同的数字。我想我可以使用 TreeMultiSet 或其他一些第三方库。
java - 修剪排序集
我有一个SortedSet
(特别是 a TreeSet
)包含更新。更新类似于 SVN 提交、Facebook 墙贴、新 Trac 票等。我将这些存储在 a 中是SortedSet
因为:
- 排序:更新需要按日期降序排序。
- 集合:从更新源获取最新更新时,我通常会收到集合中已经存在的更新。
现在,过了一段时间,这个集合会变得非常大,所以我想从集合中删除除前 X 个项目之外的任何东西(因为无论如何其他项目都不会显示)。我该怎么做,因为它不是List
?
java - Java TreeSet contains() 给出错误结果
我正在尝试用java编写一些数学。我想要做的是将分圆陪集放到 TreeSet 中。陪集有一个索引和一组整数。如果集合具有相同的元素,则陪集等于其他陪集。如果集合不同,则陪集按其索引排序。
例如:
足够好的数学。我选择将陪集放到 TreeSet 中,因为我不需要重复的元素,我需要让它们按索引排序。
问题是即使 TreeSet.contains() 返回 false,我仍然可以在 TreeSet 中找到一个在使用 compareTo() 和 equals() 方法时相等的元素。
这是程序的实际打印输出:
我附上下面的代码。我不想让代码变得更简单,因为我发现它有一些魔力。如果您在代码中将 MAGIC_INDEX值更改为 7 或更少,它就会开始工作。对我来说,这似乎是一个 JVM 错误。
有什么建议么?
java - 比较器和 equals()
假设我需要TreeSet
使用一些域逻辑排序的元素。按照这种逻辑,一些不相等的元素的顺序无关紧要,因此 compare 方法可以返回 0,但在这种情况下,我无法将它们放入TreeSet
.
所以,问题:像这样的代码我会有什么缺点:
更新:
好的。如果它应该始终是方法之间的一致性equals()
,hashcode()
并且compareTo()
正如@SPFloyd-seanizer 和其他人所说的那样。如果我删除Comparable
接口并移动这个逻辑会更好甚至更好Comparator
(我可以在不破坏封装的情况下做到这一点)?所以它将是:
更新 2:
会System.identityHashCode(x)
比hashCode()
我不需要稳定排序更好吗?
java - 为什么我们可以为 TreeSet 提供 Comparator 而不能为 HashSet 提供类似 Hasher 的东西?
在 Java 6 中,我的理解是,您可以在创建 TreeSet 时为它提供一个 Comparator 以覆盖集合中对象的“自然顺序”。
你有什么想法为什么 Java 不支持提供覆盖集合中对象的“自然散列”的“Hasher”?
编辑:在未来设计 API 时,从您那里获得输入可能会对我有所帮助。
谢谢。
java - 在 TreeSet 中,基于不同属性的自定义对象的排序和唯一性
下面是我的学生课
最新修改:但仍然没有得到正确的结果
如果我创建 TreeSet<Student> 的对象,我将获得基于唯一名称和按名称排序的 Student 对象的排序列表。
但是我的 TreeSet<Student> 中需要唯一的学生姓名,并按 student-rollNo 顺序排列。
比较器可以吗?任何人都可以帮助我,每一个建议都表示赞赏。谢谢。
更新:这是完整的程序:
更新:2:谢谢大家的建议,我还需要更多:)
输出:
朋友们,无论我使用两个比较器得到什么,在添加对象时是否可以实现相同的效果?我不能先添加元素然后使用新的比较器来实现所需的顺序。
我正在操纵数千个值,因此还需要考虑性能。
java - 排序集和比较器
我正在使用一个TreeSet
用于存储在执行 A* 算法期间使用的寻路位置的方法。
基本上,直到有“开放”元素(仍然要彻底访问),每个开放元素的邻居都会被考虑并添加到 aSortedSet
中,以使它们按成本和启发式成本排序。这意味着我有一个像这样的课程:
以这种方式,首先考虑总成本,然后,由于需要总排序(与 equals 一致),因此要考虑根据 x,y 坐标的排序。
这应该有效,但如果我在算法执行期间迭代 TreeSet 就像在
我得到的结果没有保持正确的顺序,例如:
(7,7,6) (7,6,7) (6,8,6) (6,6,7) (5,8,7) (5,7,7) (6,7,6) ( 6,6,7) (6,5,7) (5,7,7) (5,5,8) (4,7,7) (4,6,8) (4,5,8)
我错过了什么微妙的东西吗?谢谢!
java - 泛型和树集
使用泛型绝对是我的弱点,在这方面可以使用一些帮助。
该项目是开发一个简单的订单/库存系统,该系统可以下订单、跟踪项目和库存,并记录自程序首次启动以来的所有库存和客户添加/删除。这需要读取和写入文件,我选择了 CSV 格式进行解析。有两个文件需要解析,一个Customers
用于Items
.
我想使用 TreeSet 来添加/搜索日志 N,但是我的文件解析遇到了一些问题。我不想让两个具有重复代码的类为其对象类型工作,我希望有一个解析类在执行时接收集合和文件路径,并将文件处理成一组完整的对象,两者都有不同领域和方法。
我想出的唯一解决方案是TreeSet<? extends Object>
,但这意味着我必须将每个对象装箱,然后在结构中访问每个对象时将其拆箱。
有没有更简单的方法?