问题标签 [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.

0 投票
5 回答
8637 浏览

java - TreeSet 中有序操作的时间复杂度是多少?

中以下操作的时间复杂度是java.util.TreeSet多少?

  • first()
  • last()
  • lower()
  • higher()

我会假设这些是恒定的时间,但 API 不做任何保证。

0 投票
1 回答
556 浏览

java - 如何有效地将 TreeSet 的一部分保存到文件中?并重新加载它?(Java问题)

我正在使用 TreeSet 来存储一些信息,以便按照某种顺序对其进行排序。

当 TreeSet 变得非常大(> 1GB)时,我想将 TreeSet 中的最小元素保存到文件中,以释放一些 RAM。稍后,当有更多可用 RAM 时,我希望能够将这些元素重新加载到内存中以处理它们。

我的问题是:是否有一些有效的方法可以将 TreeSet 的一部分存储到文件中并稍后将它们恢复到内存中?

请注意,当我将元素重新加载到内存中时,它可能是新 TreeSet 的一部分,也可能是同一 TreeSet 的一部分。

感谢您提供有关如何执行此操作的任何想法!

0 投票
4 回答
183 浏览

java - 无法对以下树形图进行排序

输出 :

此代码应该能够对双精度值进行排序。但它会在顶部显示输出。发生什么事 ?

0 投票
1 回答
3321 浏览

scala - 如何在 Scala 中为 TreeSet 分配订单而不重复自己

我有这段 Scala 代码,它定义了一个排序并将其应用于 TreeSet。这部分编译得很好。

在代码的其他地方,我想根据我之前的顺序获取集合中的第一个元素(如果第一个元素没有产生我想要的,则稍后获取后续元素,尽管通常没有必要)指定的。我认为以下内容会起作用,但它没有编译:

错误是"could not find implicit value for parameter cmp: Ordering[Account]"

但是,如果我在要求最小值时再次指定排序对象,它会编译:

我认为它会自动使用我在构建时给出的排序,并在我添加到集合时递增排序,所以我不必在调用时再次指定排序min

我究竟做错了什么?我需要在某处显式定义隐式函数吗?

0 投票
5 回答
13115 浏览

java - 使用二分搜索从 TreeSet 中返回一个元素

在 TreeSet 中有一个名为 contains 的方法,如果元素在集合中则返回 true。我假设此方法使用二进制搜索并且不会按升序遍历所有元素。我对吗?

我有一个 TreeSet,其中包含一个类的对象,该类使用两个 String 实例变量来将其与同一类的其他对象区分开来。我希望能够通过将对象的两个实例变量(当然使用 get 方法)与其他两个 String 变量进行比较来创建一个搜索 TreeSet 的方法,如果它们相等,则返回元素。如果实例变量小于转到右子树中的第一个元素,或者如果它们在左子树中进行更大的搜索等。有没有办法做到这一点?

我知道我可以将对象存储在 ArrayList 中并使用二进制搜索来查找对象,但这不会像搜索 TreeSet 一样快。

0 投票
6 回答
14599 浏览

java - java:比较器和树集删除重复项

我有一个像这样的java类

和这个类的对象列表,我想从这个列表中删除所有具有相同field1或相同field2的重复元素,所以我有2个比较器

所以为了完成任务,我使用 treeset 之类的

但是我怎样才能只使用一个比较器和一个树集来做同样的事情呢?

谢谢您的帮助

更新:

感谢所有人的答案,但在阅读它们之后,我不知道这是否是解决实际问题的正确方法。

在我的真实案例中,field1 就像一个电话号码,而 field2 就像一个名字。所以我不想多次拨打同一个电话号码(这是第一个删除重复的树集),我不想多次拨打相同的名字(第二个删除重复的树集)

您可以修改课程,但我想知道这种方法是否可以解决真正的问题。

如果这种方法是正确的,从你的问题来看,我看到不修改类是不可能只使用一个比较器

谢谢

0 投票
2 回答
1884 浏览

java - 检查文件中单词列表的最有效方法

我刚刚完成了一项家庭作业,希望我将所有 Java 关键字添加到 HashSet。然后读入一个 .java 文件,并计算任何关键字在 .java 文件中出现的次数。

我采取的路线是:创建一个包含所有关键字的 String[] 数组。创建了一个 HashSet,并使用 Collections.addAll 将数组添加到 HashSet。然后当我遍历文本文件时,我会通过 HashSet.contains(currentWordFromFile); 检查它。

有人建议使用 HashTable 来执行此操作。然后我看到了一个使用 TreeSet 的类似示例。我只是好奇..推荐的方法是什么?

(完整代码在这里: http: //pastebin.com/GdDmCWj0

0 投票
5 回答
18250 浏览

java - java TreeSet - 不要删除重复项

TreeSet 删除具有相同 Comprator 值的不同项目。我不希望它被删除。有没有办法控制这个?还是使用另一个容器类?

补充:好的。看来我不能使用Set。出于性能考虑,我需要插入排序功能。List可以做到这一点吗?谢谢大家。

0 投票
4 回答
6012 浏览

java - 访问树集中的元素

我在这里尝试了一些非常基本的java并且已经达到了一些令人头疼的地方。本质上,我需要将文件中的某些元素读入某种类型的数组或列表中,对它们进行排序,消除重复项,然后返回前三个元素。TreeSet 看起来非常适合,因为它可以进行排序并杀死重复项。我的问题是我对如何只返回前三个元素感到困惑。迭代器似乎一直运行在集合中。使用手动迭代器创建一个 while 循环以包含一个包含迭代器循环的 while 循环似乎令人困惑并且不太可能成功。这里的答案是我需要遍历树集并将每个元素放入一个数组列表中,以便我可以访问前三个元素吗?我的意思是,这似乎可行,但似乎非常复杂。

0 投票
3 回答
1470 浏览

java - 自定义字符串长度比较器:我的错误是什么?

我定义了一个自定义比较器来按长度对我的对象的名称(字符串)变量进行排序。

这是我的person类的代码:

然后在我调用的主要方法中Collections.sort(personList, new MyNameLengthCompare);,然后将其添加到我的 TreeSetmyTreeSet.addAll(personList)

但它不是按名称长度排序的:(