有人可以告诉我何时以及为何使用 TREEMAP 。我经历了This link 但没有找到我的答案。
根据我的想法,我们使用treemap根据您的密钥对数据进行排序,同样我们也可以通过其他方式实现。
答案 0 :(得分:21)
假设您要实现字典并按字母顺序打印,可以使用TreeMap和TreeSet的组合:
public static void main(String args[]) {
Map<String, Set<String>> dictionary = new TreeMap<>();
Set<String> a = new TreeSet<>(Arrays.asList("Actual", "Arrival", "Actuary"));
Set<String> b = new TreeSet<>(Arrays.asList("Bump", "Bravo", "Basic"));
dictionary.put("B", b);
dictionary.put("A", a);
System.out.println(dictionary);
}
所有排序都自动完成并打印出来:
{A = [实际,精算师,抵达],B = [基本,布拉沃,凹凸]}
您当然也可以手动对结构进行排序,但使用TreeMap / Set可以提高效率,减少代码行数(=错误数量)并且更具可读性。
答案 1 :(得分:6)
答案 2 :(得分:4)
基于红黑树的NavigableMap实现。地图根据其键的自然顺序进行排序,或者根据使用的构造函数在地图创建时提供的比较器进行排序。
此实现为containsKey,get,put和remove操作提供了有保证的log(n)时间成本。算法是对Cormen,Leiserson和Rivest的算法导论的改编。
当您需要有序键时,使用此数据结构,不仅可以升序,还可以将comparator
传递给构造函数TreeMap(Comparator<? super K> comparator)
来编写自己的排序逻辑。它也是一种自平衡二叉搜索树。
答案 3 :(得分:4)
通过某些键对对象进行排序是有效的方式,随机访问对您来说也很重要。使用此数据结构,您可以按顺序迭代。
如果不需要随机访问,则使用有序集/包或列表。