您的位置:首页 > 其它

数组自定义排序、泛型

2017-06-22 11:40 225 查看
我们使用过数组,如

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());


这里,我们只是初步接触
泛型
这个概念
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: