相关疑难解决方法(0)

Hashset与Treeset

我一直喜欢树木,它们很好,O(n*log(n))而且它们整洁.然而,我所知道的每一位软件工程师都有针对性地问我为什么会使用TreeSet.从CS背景来看,我认为你所使用的并不重要,而且我不想乱用哈希函数和桶(在这种情况下Java).

在这情况下,我应该使用HashSetTreeSet

java hashset treeset

482
推荐指数
8
解决办法
30万
查看次数

HashSet 和 TreeSet 性能测试

我读到了 TreeSet 比 HashSet 慢的原因(将元素添加到 TreeSet 中更慢)所以我进行了性能测试,我试图找出将元素添加到 HashSet 然后将它们移动到 TreeSet 或首先把它们放在那里。看起来将元素插入 HashSet 更快,但只有当我插入大量元素时,为什么?我读过,如果我不需要对元素进行排序,请始终使用 HashSet,但显然,有时它会更慢。

当我插入一个具体的值(“1”)而不是随机数时,TreeSet 也更快,因为没有排序,那么我怎么知道什么时候使用 HashSet 或 TreeSet?

我的第二个问题,当我像这样创建 TreeSet 时,为什么我不能访问“NavigableSet”方法?

Set<Integer> treeSet = new TreeSet<Integer>();     //cant type treeSet.lower(e: E)
TreeSet<Integer> treeSet = new TreeSet<Integer>(); //can  type treeSet.lower(e: E)
Run Code Online (Sandbox Code Playgroud)

谢谢你帮我解决这个问题。

结果如下:

5 000 000(随机数)

在此处输入图片说明

5 000 000(数字“1”)

在此处输入图片说明

500 000(随机数)

在此处输入图片说明

50 000(随机数)

在此处输入图片说明

这是我的代码:

package performancetest;

import java.text.DecimalFormat;
import java.util.HashSet;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.TreeSet;

public class HashSet_vs_TreeSet {
private static DecimalFormat df = new DecimalFormat("#.#####");
private static double hashTime, …
Run Code Online (Sandbox Code Playgroud)

java performance hashset treeset

5
推荐指数
1
解决办法
3711
查看次数

标签 统计

hashset ×2

java ×2

treeset ×2

performance ×1