我一直喜欢树木,它们很好,O(n*log(n))而且它们整洁.然而,我所知道的每一位软件工程师都有针对性地问我为什么会使用TreeSet.从CS背景来看,我认为你所使用的并不重要,而且我不想乱用哈希函数和桶(在这种情况下Java).
在这情况下,我应该使用HashSet过TreeSet?
有时我看到Θ(n)带有奇怪的Θ符号,中间有一些东西,有时只有O(n).这只是打字的懒惰,因为没有人知道如何输入这个符号,或者它是否意味着不同的东西?
我已经看到了一些关于SO re Java hashmaps及其O(1)查找时间的有趣声明.有人可以解释为什么会这样吗?除非这些哈希图与我买的任何哈希算法有很大的不同,否则必须始终存在包含冲突的数据集.
在这种情况下,查找将是O(n)而不是O(1).
有人可以解释他们是否是 O(1),如果是,他们如何实现这一目标?
可能重复:
compare()和compareTo()
之间的区别Java:实现Comparable和Comparator有什么区别?
Comparable和Comparator之间的关键区别是什么?
哪些情况比哪一种更受欢迎?
谢谢
更新 - 良好的链接与示例!
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
何时使用哈希映射或树图?
我知道当我需要对它们进行排序时,我可以使用TreeMap迭代元素.但就是这样吗?当我只想查阅地图或某些最佳特定用途时,没有优化?
说明| 一种Java程序,用于读取文本文件并按字母顺序打印每个唯一单词以及单词在文本中出现的次数.
程序应该声明一个类型的变量Map<String, Integer>来存储单词和相应的出现频率.但是哪种具体类型呢?TreeMap<String, Number>还是HashMap<String, Number>?
输入应转换为小写.
一个单词不包含以下任何字符: \t\t\n]f.,!?:;\"()'
示例输出|
Word Frequency
a 1
and 5
appearances 1
as 1
.
.
.
Run Code Online (Sandbox Code Playgroud)
备注| 我知道,我已经在Perl中看到了大致两行代码的优雅解决方案.但是,我想在Java中看到它.
编辑:哦,是的,使用这些结构之一显示实现是有帮助的(在Java中).
遍历功能HashMap和LinkedHashMap遍历values()功能之间是否存在性能差异?
我对我的应用程序进行了一些分析,其中一个结果发现堆上大约18%的内存被类型的对象使用Double.事实证明这些对象是Maps 中的值,我不能使用原始类型.
我的理由是原始类型double消耗的内存少于它的对象Double.有没有办法有一个像数据结构的地图,可以接受任何类型的键和基元double作为值?
主要业务是:
我拥有的典型地图是:
HashMap<T, HashMap<NodeData<T>, Double>> graphHashMap<Point2D, Boolean> onSea (虽然不是双倍价值)ConcurrentHashMap<Point2D, HashMap<Point2D, Double>>全部用于Java 8.
附录
我主要对那些有这些类型的地图解决方案的框架不感兴趣,但对解决这些问题时需要考虑的内容感兴趣.如果您愿意,任何此类框架背后的概念/想法/方法是什么.或者解决方案也可能在另一个层面,其中地图被替换为像@Ilmari Karonen在他的答案中指出的特定模式的对象.
我正在写一本字典,大量使用String作为键Map<String, Index>.我关心的是哪一个HashMap,并TreeMap会产生更好的(更快)的性能在搜索在地图上的关键?
java ×9
hashmap ×3
big-o ×2
big-theta ×1
collections ×1
comparable ×1
comparator ×1
hashset ×1
java-8 ×1
map ×1
notation ×1
performance ×1
primitive ×1
treemap ×1
treeset ×1