求大神告知 下面这个 java code是什么意思啊??

2022-07-26 综合 58阅读
这段代码应该是实现一个map类对象的排序实现了一个Comparable接口,然后调用了
comparaTo方法将元素进行了排序。最后将排序后的元素添加到sortedEntries里

Comparable接口是一个内置的可以自定义排序方式的内置接口,比如Integer,char等包装类内部都实现了Comparable接口来自定义一个排序的方式,实现的方法是compareTo(value){
//在代码中,返回0,1,-1 3个参数 分别对应1交换位置-1不交换 0 比较的两个值相同。
}
static >
//一个静态的 类型必须是键值对并且是实现了Comparable接口的类型
SortedSet> entriesSortedByValues(Map map) {
//排序集合传入一个Map的静态对象并且键值对是K/V类型的入口排序按照他的值
//前边一整段应该都是名字写的比较规范吧,知识有限只能了解这么多
//括号中是参数传入的是一个Map类型的参数 map
SortedSet> sortedEntries = new TreeSet>(
//实例一个对象 sortedEntries 他接收的是一个TreeSet类型的变量保存的是指定的类型
//也就是Map.Entry类型
new Comparator>() {
//排序没有使用内置排序接口Comparable而是使用的Comparator他和Comparable的
//区别就是一个是排序方法写在实现了Comparable接口的内部
//一个是当元素需要调用sort时才使用
@Override public int compare(Map.Entry e1, Map.Entry e2) {
//重写了Comparator内部的compara方法 返回一个int值
int res = e2.getValue().compareTo(e1.getValue());
//最后的实际排序还是使用的Comparable接口的comparaTo方法
//写的有点啰嗦 应该是可以直接用Comparable排序的又new 了一个
//Comparator,他是把两种排序方式组合使用了,Comparable定义了排序的方式
//Comparator执行排序的操作
return res != 0 ? res : 1;
//返回结果 如果res不等于0 为真就返回res的值,假返回1
}
}
);
sortedEntries.addAll(map.entrySet());
//代码截的不全 这应该是排序后将元素添加到整个队列中。
return sortedEntries;
//然后将整个队列返回
//个人理解有不对的地方谅解。
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com