Java 如何将单词作为键存储在树状图中?
使用树映射,我将如何使用比较器将作为单词的键映射到相应的链表Java 如何将单词作为键存储在树状图中?,java,sorting,dictionary,Java,Sorting,Dictionary,使用树映射,我将如何使用比较器将作为单词的键映射到相应的链表 TreeMap<String, LinkedList<String>()> () words = new TreeMap(<Comparator> ); TreeMap()words=newtreemap(); 我是否可以使用一个特定的比较器,或者我是否必须实现一种方法,让它按照字母顺序对我添加到树形图中的单词进行排序?无需使用比较器 作为一个整体,a承诺保持其密钥的有序性 类,地图键的类,已经
TreeMap<String, LinkedList<String>()> () words = new TreeMap(<Comparator> );
TreeMap()words=newtreemap();
我是否可以使用一个特定的比较器,或者我是否必须实现一种方法,让它按照字母顺序对我添加到树形图中的单词进行排序?无需使用比较器
作为一个整体,a承诺保持其密钥的有序性
类,地图键的类,已经实现了。因此字符串对象知道如何排序。对于可比较的键
,无需指定比较器
此外,通常最好使用接口或超类以更通用的方式声明集合。这为您以后在不破坏其他代码的情况下更改具体类留下了空间。因此NavigableMap>map
而不是TreeMap>map
例如,在下面的代码中,我们可以自由地使用List.of
生成某个未知具体类的List
,而不是像代码中所示仅限于LinkedList
NavigableMap< String , List< String > > map = new TreeMap<>() ;
看这个
map.toString()➡ {动物=[狗,猫,鸟],汽车=[本田,马自达],人=[爱丽丝,鲍勃,卡罗尔]}
注意
“cars”
条目是如何从第3位添加到第2位的,按字母顺序排列在“动物”和“人”之间。我不确定我是否理解;默认情况下,TreeMap
使用文档中指示的自然顺序,即,compareTo
。字符串已经实现了compareTo
。尝试使用它TreeMap words=newtreemap(Comparator.naturalOrder());
map.put( "animals" , List.of( "dog" , "cat" , "bird" ) ) ;
map.put( "people" , List.of( "Alice" , "Bob" , "Carol" ) ) ;
map.put( "cars" , List.of( "Honda" , "Mazda" ) ) ;