我们使用过数组,如
String[] strs = {"xxx","aaa","kkkk"}
使用sort()
方法对数组排序:
Arrays.sort(strs);
遍历:
for (String s : strs){
System.out.println(s);
}
sort()
默认排序:如果是字符串默认安装字母从a-z
,如果是数字默认从小到大。
sort方法的第2个参数
Arrays.sort(strs,第2个参数)
#第二个参数,可以传入一个类,来实现自定义排序,比如:按照数组元素长度排序
1、我们首先得写一个实现Comparator
的类
import java.util.Comparator;
public class MyCompare implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String a = (String)o1;
String b = (String)o2;
if (a.length() > b.length()){
return 1;
}else if (a.length() < b.length()){
return -1;
}
return 0;
}
}
从上面代码可以,看出我们进行了长度的比较。
2、现在来看Arrays.sort
方法如何使用到这个类:
// 数组
String[] names = {"zhangsan","lisi","wangwu","hanmeimei"};
// 排序
Arrays.sort(names, new MyCompare());
// 遍历输出
for (String s : names){
System.out.println(s);
}
打印结果如下:
lisi
wangwu
zhangsan
hanmeimei
说明长度最小的排在了前面。
如果要长度最大的排在前面,我们只需要修改MyCompare
这个类的compare
方法:
@Override
public int compare(Object o1, Object o2) {
String a = (String)o1;
String b = (String)o2;
if (a.length() > b.length()){
return -1;
}else if (a.length() < b.length()){
return 1;
}
return 0;
}
泛型的概念
上面我们在进行数组自定义排序的时候,其实IDE对我们已经进行了一个提示。这是告诉我们传进去的数据类型应该是一个泛型。
我们把MyCompare
类改造一下:
public class MyCompare implements Comparator <String> {
@Override
public int compare(String o1, String o2) {
if (o1.length() > o1.length()){
return -1;
}else if (o1.length() < o2.length()){
return 1;
}
return 0;
}
}
这样要求传的就是String
类型,我们就不必再转为String了。
在使用这个类对数组进行排序的时候,IDE也不会有”黄色”提示了。
// 排序
Arrays.sort(names, new MyCompare());
这里,我们只是初步接触泛型
这个概念