我想在treemap中存储键值对,并根据键值按照以下逻辑对条目进行排序:
按键的长度排序。如果两个键的长度相同,则按字母顺序排列。例如,对于以下键值对。
IBARAKI MitoCity
TOCHIGI UtunomiyaCity
GUNMA MaehashiCity
SAITAMA SaitamaCity
CHIBA ChibaCity
TOKYO Sinjyuku
KANAGAWA YokohamaCity
预期的输出是这样的。
CHIBA : ChibaCity
GUNMA : MaehashiCity
TOKYO : Sinjyuku
IBARAKI : MitoCity
SAITAMA : SaitamaCity
TOCHIGI : UtunomiyaCity
KANAGAWA : YokohamaCity
6条答案
按热度按时间5lhxktic1#
您可以定义
Comparator<String>
您需要在构造函数中调用TreeMap
:vojdkbi02#
你可以这样做。
customsortcomparator的定义如下。
bz4sfanl3#
您应该创建一个唯一的比较器来比较Map的键。但是,因为您也想打印这些值,所以应该比较整个条目集:
然后可以使用此比较器进行排序:
7kqas0il4#
可以将比较器作为参数传递给map的构造函数。根据文件,它仅用于钥匙:
这样,您就可以通过键的长度传递比较器,如下所示:
izj3ouym5#
您可以使用此方法,而不是直接将Map转换为树状图
4smxwvx56#
你需要自己写
comparator
并用在TreeMap
,例如:这不能处理
null
值,但如果您希望null
用例中的值。