san*_*aur 4 java sorting maven
Map<XMLGregorianCalendar, String> SortedByTimeForJourney = new HashMap<XMLGregorianCalendar, String>();
Run Code Online (Sandbox Code Playgroud)
我必须按键(XMLGregorianCalendar)对其进行排序。我试过了
SortedByTimeForJourney.entrySet().stream().sorted(Map.Entry.<XMLGregorianCalendar, String>comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
Run Code Online (Sandbox Code Playgroud)
但它显示类型参数'javax.xml.datatype.XMLGregorianCalendar'的边界不完整;应该实现'java.lang.Comparable'
我也尝试通过将其保存在LinkedHashMap中并使用Collections.util方法来执行此操作,但是无法执行。
有人请帮助我。
正如javadoc所说:
映射是根据其键的自然顺序排序的,或者是
Comparator根据映射创建时提供的排序的,具体取决于所使用的构造函数。
由于XMLGregorianCalendar没有实现Comparable,即没有自然顺序,因此必须Comparator在构造函数中指定a 。
在Java 8+中,使用:
new TreeMap<>(XMLGregorianCalendar::compare)
Run Code Online (Sandbox Code Playgroud)
在旧版Java中,请使用:
new TreeMap<>(new Comparator<XMLGregorianCalendar>() {
@Override
public int compare(XMLGregorianCalendar cal1, XMLGregorianCalendar cal2) {
return cal1.compare(cal2);
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |