求大神告知 下面这个 java code是什么意思啊??
static<K,VextendsComparable<?superV>>SortedSet<Map.Entry<K,V>>entriesSortedByValues(M...
static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
new Comparator<Map.Entry<K,V>>() {
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
int res = e2.getValue().compareTo(e1.getValue());
return res != 0 ? res : 1;
}
}
);
sortedEntries.addAll(map.entrySet());
return sortedEntries;
}
哪个是变量,哪个是函数,,哪个是类型,这个函数有什么用?? 展开
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
new Comparator<Map.Entry<K,V>>() {
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
int res = e2.getValue().compareTo(e1.getValue());
return res != 0 ? res : 1;
}
}
);
sortedEntries.addAll(map.entrySet());
return sortedEntries;
}
哪个是变量,哪个是函数,,哪个是类型,这个函数有什么用?? 展开
3个回答
展开全部
这段代码应该是实现一个map类对象的排序实现了一个Comparable接口,然后调用了
comparaTo方法将元素进行了排序。最后将排序后的元素添加到sortedEntries里
Comparable接口是一个内置的可以自定义排序方式的内置接口,比如Integer,char等包装类内部都实现了Comparable接口来自定义一个排序的方式,实现的方法是compareTo(value){
//在代码中,返回0,1,-1 3个参数 分别对应1交换位置-1不交换 0 比较的两个值相同。
}
static <K,V extends Comparable<? super V>>
//一个静态的 类型必须是键值对并且是实现了Comparable接口的类型
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
//排序集合传入一个Map的静态对象并且键值对是K/V类型的入口排序按照他的值
//前边一整段应该都是名字写的比较规范吧,知识有限只能了解这么多
//括号中是参数传入的是一个Map类型的参数 map
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
//实例一个对象 sortedEntries 他接收的是一个TreeSet类型的变量保存的是指定的类型
//也就是Map.Entry<k,v>类型
new Comparator<Map.Entry<K,V>>() {
//排序没有使用内置排序接口Comparable而是使用的Comparator他和Comparable的
//区别就是一个是排序方法写在实现了Comparable接口的内部
//一个是当元素需要调用sort时才使用
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> 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;
//然后将整个队列返回
//个人理解有不对的地方谅解。
}
comparaTo方法将元素进行了排序。最后将排序后的元素添加到sortedEntries里
Comparable接口是一个内置的可以自定义排序方式的内置接口,比如Integer,char等包装类内部都实现了Comparable接口来自定义一个排序的方式,实现的方法是compareTo(value){
//在代码中,返回0,1,-1 3个参数 分别对应1交换位置-1不交换 0 比较的两个值相同。
}
static <K,V extends Comparable<? super V>>
//一个静态的 类型必须是键值对并且是实现了Comparable接口的类型
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
//排序集合传入一个Map的静态对象并且键值对是K/V类型的入口排序按照他的值
//前边一整段应该都是名字写的比较规范吧,知识有限只能了解这么多
//括号中是参数传入的是一个Map类型的参数 map
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
//实例一个对象 sortedEntries 他接收的是一个TreeSet类型的变量保存的是指定的类型
//也就是Map.Entry<k,v>类型
new Comparator<Map.Entry<K,V>>() {
//排序没有使用内置排序接口Comparable而是使用的Comparator他和Comparable的
//区别就是一个是排序方法写在实现了Comparable接口的内部
//一个是当元素需要调用sort时才使用
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> 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;
//然后将整个队列返回
//个人理解有不对的地方谅解。
}
2015-09-22
展开全部
static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
//...
}
看这一段,方法名entriesSortedByValues,形参Map<K,V> map,返回值 SortedSet<Map.Entry<K,V>>。其中形参和返回值使用了Java的泛型。
方法内部主要实现:
new TreeSet<Map.Entry<K,V>>(
new Comparator<Map.Entry<K,V>>() {
//...
}
这个是Set的一个内部排序。
大致就是这样了,详细的话还是需要自己去看下Java泛型和set自定义排序部分的源码实现。
有帮助请采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个其实就是比较两人个Map同等KEY值是否相等。
只是是共通写的相对比较规范
只是是共通写的相对比较规范
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询