Questions tagged «treeset»

13
哈希集与树集
我一直都喜欢树木,它们的优美O(n*log(n))和整洁。但是,我认识的每个软件工程师都曾明确地问过我为什么要使用TreeSet。从CS的背景出发,我认为您使用的所有内容都不重要,并且我也不在乎哈希函数和存储桶(对于Java)。 在哪种情况下,我应该使用HashSetover TreeSet?
495 java  hashset  treeset 


1
为什么不使用自定义比较器从TreeSet中删除,则会删除较大的项集?
同时使用Java 8和Java 11,将以下内容TreeSet与String::compareToIgnoreCase比较器一起考虑: final Set<String> languages = new TreeSet<>(String::compareToIgnoreCase); languages.add("java"); languages.add("c++"); languages.add("python"); System.out.println(languages); // [c++, java, python] 当我尝试删除中存在的确切元素时TreeSet,它起作用:所有指定的元素均被删除: languages.removeAll(Arrays.asList("PYTHON", "C++")); System.out.println(languages); // [java] 但是,如果我尝试删除的内容超过了中的所有内容TreeSet,则该调用根本不会删除任何内容(这不是后续调用,而是被调用了,而不是上面的代码段): languages.removeAll(Arrays.asList("PYTHON", "C++", "LISP")); System.out.println(languages); // [c++, java, python] 我究竟做错了什么?为什么会这样呢? 编辑:String::compareToIgnoreCase是有效的比较器: (l, r) -> l.compareToIgnoreCase(r)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.