⑴ java排序comparator
Comparator的compare是自定义排序实现算法,compare()返回一个int值。
当int < 0 则 o1 < o2;
int = 0 o1 = o2;
int > 0 o1 > o2;
compare()实现的是一种排序规则,sort()是排序的动作,如果sort(list,compare实现)则表示按自定义的排序算法去排序,如果不指定会按自然排序。
list本事是线性、有序的集合,在元素长度相同时会安装原顺序排位。
所以[BigBossm, ben, jazz, adm, Marry, bill, Xiloer, Kate, killer] 排序后会得到
[ben, adm, jazz, bill, Kate, Marry, Xiloer, killer, BigBossm]
ben最短切位置靠前,所以排完是第一个元素。
o2.length()-o1.length()
[BigBossm, Xiloer, killer, Marry, jazz, bill, Kate, ben, adm]
⑵ Java编写程序实现Comparator接口,实现字符串按 降序排序怎么弄
Comparator升序降序实现 int compare(Object o1, Object o2) 返回一个基本类型的整型 1) 如果要按照升序排序, 则o1 小于o2,返回-1(负数),相等返回0,01大于02
⑶ java Comparator中的返回值和排序有什么关系啊,求解释!!!!!
负数代表左值小于右值,排在上面
正数代表左值大于右值,排在下面
0代表左值等于右值,排在上面
可以这样理解:排序就是比较谁大谁小,将小的放在前面,大的放在后面。例如当返回负数的时候,表明第一个数应该排在第二个数的上面。
⑷ JAVA comparator接口 字符串数组排序
importjava.util.Arrays;
importjava.util.Comparator;
publicclassYuGiOh
{
publicstaticvoidmain(String[]args)
{
String[]strs={"qwe","asfa","qfwagaa","rfbu","a","hlelllp"};
Arrays.sort(strs,newComparator<String>()
{
@Override
publicintcompare(Stringo1,Stringo2)
{
if(o1.length()>o2.length())
{
return1;
}
elseif(o1.length()<o2.length())
{
return-1;
}
else
{
return0;
}
}
});
System.out.println(Arrays.toString(strs));
}
}
⑸ java里comparator怎么给字符串排序
是排序字符串里面的字符吗,先转成数组,
char[]
toCharArray()
Converts this string to a new character array.
再使用 java.util.Arrays 的sort方法
static <T> void sort(T[] a,
Comparator<? super T> c)
Sorts the specified array of objects according to the order inced by
the specified comparator.
⑹ 高手给解决一下,java Comparator对象比较多个属性排序
外层if比较年度,内层if比较季度
⑺ 请教:JAVA中,comparator接口如何对double型数据进行排序。
返回值是int
-1,0或1。1表示第一个数比第二个数大,0表示相等,-1表示第一个数比第二个数小。这个int跟你要比较的数值类型没关系。举例:
import
java.util.Comparator;
public
class
Test1
implements
Comparator
{
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 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[] integers = new Integer[20];
for(int i = 0; i < integers.length; i++)
integers[i] = 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));
}
}