comparator排序规则(请教:JAVA中,comparator接口如何对double型数据进行排序)

本文目录
- 请教:JAVA中,comparator接口如何对double型数据进行排序
- java comparator 默认是升序么
- Java Arraylist 如何使用 Comparator排序
- Java的List怎么排序啊
- java中comparator和compare它们两个是按照从大到小排序的还是从小到大排序的
- 关于java使用Comparator多列数据升序、降序排列的问题哪位大侠能解决
请教:JAVA中,comparator接口如何对double型数据进行排序
返回值是int -1,0或1。1表示第一个数比第二个数大,0表示相等,-1表示第一个数比第二个数小。这个int跟你要比较的数值类型没关系。举例:
import java.util.Comparator;
public class Test1 implements Comparator《Double》{
public int compare(Double o1, Double o2) {
return o1.compareTo(o2);
}
public static void main(String args) {
Test1 t = new Test1();
double i=10,j=9;
System.out.println(t.compare(j, i));
}
}
java comparator 默认是升序么
comparator 不是接口吗,可以implement之后重写它的compare(T o1, T o2)方法实现降序啊(compare方法返回的是一个int型的数值,从小于0,等于0到等于0依次表示的是o1小于o2,o1等于o2,o1大于o2,所以可以反写逻辑实现降序的,以下是一个按年龄降序打印的例子)
package hahalan.lianxi;
import java.util.Arrays;
public class People {
String name;
int age;
public People(String name,int age) {
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public static void main(String args) {
People{new People("张三", 18),
new People("李四", 20),new People("王五", 19)};
System.out.print("排序前:");
for (People people : peoples) {
System.out.print(people.getName()+":"+people.getAge()+" ");
}
System.out.print("\n排序后:");
Arrays.sort(peoples,new PeopleComparator());
for (People people : peoples) {
System.out.print(people.getName()+":"+people.getAge()+" ");
}
}
}
package hahalan.lianxi;
import java.util.Comparator;
public class PeopleComparator implements Comparator《People》 {
@Override
public int compare(People o1, People o2) {
return o2.getAge()-o1.getAge();
}
}
打印结果为:
排序前:张三:18 李四:20 王五:19
排序后:李四:20 王五:19 张三:18
Java Arraylist 如何使用 Comparator排序
用Comparator是策略模式(strategy design pattern),就是不改变对象自身,而用一个策略对象(strategy object)来改变它的行为。
比如:你想对整数采用绝对大小来排序,Integer是不符合要求的,你不需要去修改Integer类(实际上你也不能这么做)去改变它的排序行为,只要使用一个实现了Comparator接口的对象来实现控制它的排序就行了。
示例代码如下:
//AbsComparator.java
import java.util.*;
public class AbsComparator implements Comparator {
public int compare(Object o1, Object o2) {
int v1 = Math.abs(((Integer)o1).intValue());
int v2 = Math.abs(((Integer)o2).intValue());
return v1 》 v2 ? 1 : (v1 == v2 ? 0 : -1);
}
}
//Test.java
import java.util.*;
public class Test {
public static void main(String args) {
//产生一个20个随机整数的数组(有正有负)
Random rnd = new Random();
Integer;
for(int i = 0; i 《 integers.length; i++)
integers = new Integer(rnd.nextInt(100) * (rnd.nextBoolean() ? 1 : -1));
System.out.println("用Integer内置方法排序:");
Arrays.sort(integers);
System.out.println(Arrays.asList(integers));
System.out.println("用AbsComparator排序:");
Arrays.sort(integers, new AbsComparator());
System.out.println(Arrays.asList(integers));
}
}
Java的List怎么排序啊
用Collections.sort就可以排序,
里面的排序是默认的按自然顺序排列
也就是1,2,3,4这种
参数要求实现了Comparable的数据才能排序,
如果你自己写的类,你就要实现Comparable接口,然后在接口里面自动生成的方法里面
指定排序方法,一般的String Inteneger类都是实现了这个接口的 不用自己操作的。
你可以取看源代码
java中comparator和compare它们两个是按照从大到小排序的还是从小到大排序的
comparator是个比较器接口,实现这个接口可以自己定义一个排序方式
compare是一个方法,你要定义一个排序必须重写这个方法
有很多比较器,一般默认字典顺序
关于java使用Comparator多列数据升序、降序排列的问题哪位大侠能解决
list中放的是对象吧。
重写一下compare方法就行啊。
一个多if判断的问题,
升序代码
如果(产品好相等){
升序代码
如果(会员号相等){
升序代码
如果(客户号相等){
降序代码
如果(顺序号相等){
}
}
}
}
升序和降序其实就是a》b是return 1还是return -1 的事。
如果需要代码就接着追问。

更多文章:
jquery sortable(jquery sortable怎么支持多个一起拖拽)
2026年8月28日 14:00
数组大小计算公式(关于EXCEL里数组比较大小 然后分别赋值的公式)
2025年6月18日 08:30
addeventlistener()(window.addeventlistener怎么用)
2026年5月21日 20:00
display在java中什么意思(javascript中 visibility和display的区别)
2025年10月10日 06:30
web of science怎么看全文(如何在web of science 上检索一个学者的全部文章)
2025年12月22日 01:15
soil的翻译(英语单选提问:soil 与earth 的区别)
2026年1月16日 17:15
8086汇编语言中的DIV指令溢出问题(回答的好会加分)?汇编里面,进位一定溢出吗
2026年2月5日 09:15
readfile共享读写(MFC如何读取文件到内存,再写到磁盘)
2026年6月6日 02:45
datetime库的time引用(python中如何把datetime.datetime转换成datetime.time)
2025年10月5日 10:45
long int类型占几个字节(【C语言】关于int、long所占字节数问题的讨论万分感谢!)
2025年11月24日 21:00







![grep使用正则表达式(正则表达式:grep “^[[:space :]]*$” 表示什么)](/static/images/nopic/9.jpg)




