【Java中Comparable和Comparator】教程文章相关的互联网学习教程文章

java – 下限通配符(Comparable <?super K>)【代码】

在集合中,经常使用Comparable接口,例如.在PriorityQueue中:private static <T> void siftUpComparable(int k, T x, Object[] es) {Comparable<? super T> key = (Comparable<? super T>) x;...if (key.compareTo((T) e) >= 0)break;... }比如说,我们创建整数队列并添加一些内容:PriorityQueue<Integer> queue = new PriorityQueue<>(); queue.add(1);如果我得到通配符的概念,使用<?的唯一效果超级T>而不是< T>是编译器扩展compa...

java反射调用一个带有Comparable []参数的方法【代码】

我有一个带有静态方法的类,它以Comparable []为参数. 我需要找到并调用该方法.我尝试了以下java反射class X{public static void sort(Comparable[] a){System.out.println("sorting");}public static void read(String name){System.out.println("name="+name);} }... public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccess...

Java Comparable返回值,它必须是1,-1还是0?【代码】

这可能是一个微不足道的问题,但我还没有找到任何关于它的信息,所以这里有:在实现Comparable接口时,我们应该定义方法compareTo(),以便根据文档提供以下内容:sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y.The relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.x.compareTo(y)==0 implies that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z.现在,令人困惑...

java – JAXB 2.1为生成的Class实现Comparable【代码】

>使用Jaxb 2.1从.xsd生成java代码>使用jaxb2-basics插件>想要生成Class Fragment来实现Comparable< Fragment> public class Fragment implements Serializable, Comparable<Fragment> {...public int compareTo(Fragment other) {.....return 0;} }使用下面的jaxb绑定文件<?xml version="1.0" encoding="UTF-8"?> <jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xj...

java中的Comparable和Comparator

Comparable:使用Comparable一般都是通过类去实现此接口的,在类的内部去实现这个方法,所以一般人也称作为内部比较器(相对于Comparator来说),有好多的java原生的类都是实现了这个接口,比如String,....。public interface Comparable<T> { //如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。public int compareTo(T o); } Comparator:使用Comparator一般都是写一个类去实现Comparator接口,让这个类...

java – Comparable vs Raw Comparable【代码】

我最近写了一个简单的通用选择排序方法来获得它的乐趣,当我对某些东西感到有些困惑时.这是我的代码:public static <T extends Comparable<T>> void sort(List<T> list) {for (int i = 0; i < list.size(); i++) {int minIndex = i; // Assume that the first element is the minimum for now.// Find smallest element in unsorted sub-list.for (int k = i + 1; k < list.size(); k++) {if (list.get(k).compareTo(list.get(minI...

java – 错误不兼容类型:Comparable无法转换为T.【代码】

我不确定发生了什么.该方法使用数组运行pereclty,但如果我使用列表……那么. 我真的希望你能帮助我.public static <T> void ordenaSeleccion(List<? extends Comparable<T>> datos) {Object aux;int menor;for (int i = 0; i < datos.size(); i++) {menor = i;for (int j = i + 1; j < datos.size(); j++) {if (datos.get(menor).compareTo(datos.get(j)) > 0) { //error linemenor = j;}}if (menor != i) {aux = datos.get(i);dat...

[I cannot be cast to java.lang.Comparable

如果你是在Set集合和List集合的相互转化,或者是数组转集合中出现了这个异常,你可以检查一下是不是用了基本数据类型的数组来进行集合的转换, 这个异常一开始的[I 可以看出这是没有重写Object的toString而打印出的Object中的toString方法的开始的两个字符。 这两个字符当然不能进行正常的类型转换了。因为这个异常是将数组的地址作为元素存储在集合中了, (我认为可能是你在数组中存储的值是基本数据类型,而集合中只能存储对象,...

java – 在接口中实现Comparable

我只使用它的接口调用一个特定的类.问题是,类本身实现了Comparable,但由于我通过不同的接口引用该类,因此编译器不知道它实现了Comparable.我确信有一个简单的解决方案……但我现在想不到它.解决方法:实现接口的所有内容是否也会实现Comparable< T>?如果是这样,我建议您只需使界面扩展为Comparable< T>. 否则,您可以转换为Comparable< T>如果你碰巧知道在这种情况下它会起作用.当然,这会失去一些编译时类型的安全性,但这就是野兽的...

Java对象比较-Comparable和Comparator接口使用【代码】【图】

最近在学习贪心算法和动态规划的过程中,里面有一段自然排序的操作,顺便简单了解一下Java中对象比较后排序要使用的两个接口:Comparable和Comparator。如果是数字,直接比较就行,但是如果是对象,如何比较后排序呢?就需要用到这两个接口了,并且将自己定义的类作为参数传入接口泛型,在接口里重写比较方法,将自己要选择排序的类属性添加到比较条件中去。 接口主要区别 (1)Comparable接口是在java.lang下,Comparator接口是在...

java – Collection类的sort()方法如何调用Comparable的compareTo()?【代码】

假设我想对Employee对象列表进行排序:Employee emp1 = new Employee("Abhijit", 10); Employee emp2 = new Employee("Aniket", 5); Employee emp3 = new Employee("Chirag", 15);List<Employee> employees = new ArrayList<Employee>(); employees.add(emp1); employees.add(emp2); employees.add(emp3); Collections.sort(employees); System.out.println("sorted List is: "+employees);我的Employee类实现了Comparable,因此它必...

Java泛型:如何在没有原始类型的情况下转换为(T扩展Comparable <?super T>)【代码】

我想知道是否有可能将非Comparable转换为某种东西,以便它匹配方法参数T,它具有模板类型< T extends Comparable<? super T>>,与Collections.sort()方法一样public static <T extends Comparable<? super T>> void sort(List<T> list)假设我某处有一个非可比较列表的引用,并希望通过像这样的方式调用该方法:List<E> foo = new List<E>(a); Collections.sort( /* magic cast */ foo);如果我转换为(List<?extends Comparable>),我可...

如何转换实现java.lang.Comparable的类来实现Scala.Ordered?【代码】

是否重命名扩展Comparable [A]扩展Ordered [A]并重命名def compareTo以进行def比较,或者我应该注意什么?解决方法:你是对的,这就是你需要做的. Ordered中的其他方法将使用其默认实现,如下所示:def < (that: A): Boolean = (this compare that) < 0 def > (that: A): Boolean = (this compare that) > 0 def <= (that: A): Boolean = (this compare that) <= 0 def >= (that: A): Boolean = (this compare that) >= 0 def comp...

java – 获取集合中N个最小的[Comparable]项

我有一个未分类的对象集合[可比较],是否有可能获得列表集合的子列表而无需调用sort? 我正在考虑使用有限容量执行SortedList的可能性,但这看起来不是正确的选项. 我可以很容易地写出这个,但我想知道是否还有另一种方式. 我无法修改现有集合的结构.最佳答案:由于您不想调用sort(),因此您似乎正在尝试避免O(n log(n))运行时成本.实际上有一种方法可以在O(n)时间内完成 – 你可以使用selection algorithm. 在Guava库中有一些方法可以做...

小白养成记——Java比较器Comparable和Comparator【代码】【图】

一、使用情景 1. 调用Arrays.sort()方法或Collections.sort()方法对自定义类的对象排序 以Arrays.sort()为例。假定有如下自定义的Person类1 public class Person {2 3 private String name;4 private Integer age;5 6 public Person() {}7 8 public Person(String name, Integer age) {9 this.name = name; 10 this.age = age; 11 } 12 13 //Getter and Setter 14 15 @Override 16...