Java 如何根据';键';

Java 如何根据';键';,java,sorting,treemap,Java,Sorting,Treemap,我有一个映射studentsByCountry=newtreemap() 它显示如下: key=CountryA , value = List<UserVO> key=CountryB , value = List<UserVO> key=CountryC , value = List<UserVO> 一个选项是将sortOrderNumber附加到密钥例如1\u CountryC、2\u CountryB和3\u CountryA 我可以通过传统的Java

我有一个
映射studentsByCountry=newtreemap()

它显示如下:

key=CountryA , value = List<UserVO>
key=CountryB , value = List<UserVO>
key=CountryC , value = List<UserVO>
一个选项是将sortOrderNumber附加到密钥<代码>例如1\u CountryC、2\u CountryB和3\u CountryA


我可以通过传统的Java实现吗

您应该使用
newtreemap()

Map sortedMap=newtreemap(Collections.reverseOrder());
分类地图putAll(myMap);
灵感来自:

如果你想要一个无序的映射,你应该使用
HashMap


Java中的TreeMap是映射接口的实现之一。它与其他实现HashMap的不同之处在于,与无序的HashMap不同,
树映射被排序

树映射应该如何知道哪个在前,哪个在后?键中没有任何东西表明CountryC应该是最低的元素。因此,附加1、2等是唯一的选择?不,不是唯一的选择。但是您需要有一个规则来确定哪个是顺序,然后将其实现为一个比较器,并将其传递到树映射的构造函数中。.reverseOrder()表示降序。我想让它保持活力。所以有时候,如果定义的排序器是DBAC,那么我们会显示:CountryD,CountryB,CountryA,CountryC[CountryD,CountryB,CountryA,CountryC]不是排序器,您应该实现HashMap。或者您需要添加任何前缀来定义订单。是的,正如我所说,一个选项是将sortOrderNumber附加到密钥。例如1_CountryC、2_CountryB和3_CountryA
key=CountryC , value = List<UserVO>
key=CountryB , value = List<UserVO>
key=CountryA , value = List<UserVO>
Map<String, List<UserVO>> sortedMap = new TreeMap<>(Collections.reverseOrder());
sortedMap.putAll(myMap);