我一直使用类似的接口,通过collection.sort为我的班级提供自然的排序。
基本上,如果我有一个person类,我将获得它来实现Comparable接口并提供compareTo的实现。但是在javadocs中Collections.sort的定义中,我看到了这个签名
public static <T extends Comparable<? super T>> void sort(List<T> list)
我根本不了解这个泛型定义?不应该说
<T implements Comparable<T>>
有人可以帮我弄这个吗?
其实,这表示T 可以 实现Comparable<? super T>
,而不仅仅是Comparable<T>
。
例如,这意味着一个Student
类可以实现Comparable<Person>
,其中Student
是的子类Person
:
public class Person {}
public class Student extends Person implements Comparable<Person> {
@Override public int compareTo(Person that) {
// ...
}
}
在这种情况下,可以按List进行排序,Collections.sort()
但只能基于Person
的属性进行排序,因为您将Student
实例compareTo()
作为传入Person
(当然,除非您向下转换)。
但是在实践中,您永远不会看到Student
类实现Comparable<Person>
。那是因为Person
可能已经实现了Comparable<Person>
,并且Student
继承了它的实现。但是,最终结果是相同的:您可以将传递给List<Student>
,Collections.sort()
并对其进行排序Person
。
之间的差Comparable<T>
和Comparable<? super T>
在更明显重载的版本Collections.sort()的,需要一个Comparator<? super T>
:
class ByAgeAscending implements Comparator<Person> {
@Override public int compare(Person a, Person b) {
return a.getAge() < b.getAge();
}
}
List<Student> students = getSomeStudents();
Collections.sort(students, new ByAgeAscending());
问题内容: http://www.java2s.com/Open-Source/Java-Open-Source- Library/7-JDK/java/java/util/concurrent/ConcurrentLinkedQueue.java.htm 上面是ConcurrentLinkedQueue的源代码。我无法理解一种情况。 条件 (p == q) 如何出现在offer方法的以下代码片段
public static final int ERROR_CODE_SUCCESS = -1; public static final int ERROR_CODE_INTERNAL_ERROR = 0; public static final int ERROR_CODE_INVALID_REQUEST = 1; public static final int ERROR_CODE_NETWO
BQMM/MMEmotionCentre.h 说明: iOS SDK核心头文件 MMEmotionCentreDelegate协议方法 - 表情点击回调 - (void)didSelectEmoji:(MMEmoji *)emoji; didClickGifTab - 点击表情键盘底栏gif按钮的回调 - (void)didClickGifTab; didSelectTipEmoji - 点击
类说明 管理类 Dongtu 版本信息 public static final String VERSION 传入APP_ID和APP_SECRET进行初始化 public static void configure(Context context, String appId, String appSecret) 传入用户信息,包括唯一标识userId、昵称userName、性别gender、
类说明 模型类 DTGif 说明: 动图模型类 /** 图片id */ @property (nonatomic, strong) NSString *imageId; /** 图片名称 */ @property (nonatomic, strong) NSString *text; /** 图片缩略图地址 */ @property (nonatomic, strong) NSString *
类和开放接口 管理类 DongtuStore Android SDK核心文件 注册appId和appSecret,初始化配置,建议在Application.onCreate()中调用。 public static void initConfig(Context context, String appId, String appSecret) 传入用户信息。 public static void