有数组String[]str={"aa","b","cccc","ddd",}用Comparator中的 int compare(T o1, T o2)方法使其输出结果是:b
aa
ddd
cccc
这个方法我以前不经常用
不知道如何用这个方法去实现 我想要的结果,大家集思广益 想一下怎样实现
或者 有用到这个方法的例子拿出来 请大家都学习学习
aa
ddd
cccc
这个方法我以前不经常用
不知道如何用这个方法去实现 我想要的结果,大家集思广益 想一下怎样实现
或者 有用到这个方法的例子拿出来 请大家都学习学习
解决方案 »
- GUI界面无反应
- 菜鸟 求解决java的tcp问题
- 异常java.lang.IllegalStateException
- 帮我看看什么意思啊 ajax
- 我用install4j或者advanced installer工具打包安装包,如何做到更新时可以只更新部分代码?
- hibernate映射问题
- 用IntelliJIDEA和Tomcat5.0编的程序出现以下错误,什么原因?
- Hibernate连接查询问题
- 用com.microsoft.jdbc.sqlserver.SQLServerDriver的时候要把驱动包放到哪个目录下?
- webservices除了用SOAP实现之外,还可以用什么实现?
- 整合ssh问题
- spring jpa 连接两个数据库,oracle informix
Name是user对象的1个属性
然后用compareTo(user o){
return this.getName().compareTo(o.getName());
}
最后你通过条件取出来的list(userlist)对他进行Name的排序
Collections.sort(userlist);
import java.util.Comparator;
public class ComparatorTest1{
public static void main(String[]args){
String[]str={"a","bbc","ab","cddvv"};
Arrays.sort(
str, new Comparator<String>(){
public int compare(String s1, String s2){
return s1.length()-s2.length();//为什么要这样写,不明白 }
}
);
for(int i=0; i < str.length; i++){
System.out.println(str[i]);
}
}
}return s1.length()-s2.length(); 不明白为什么要这样写懂的 帮忙解释一下 谢谢啦
s1,s2循环来自str,我猜测应该是sort()的内部实现.
return s1.length()-s2.length();如果返回负数,compare(String s1, String s2)得到s1<s2,也就是返回-1.然后Arrays.sort就根据从小到大(字符串长度从短到长)排序了...个人愚见.抛砖引玉了
s1.length()-s2.length()<0 s1就<s2. 相当于把字符串当做数字来看
然后compare已经有结果了,就是s1<s2,sort就知道了.以此类推
public class ComparatorTest2 {
public static void main(String[] args) {
String[] str={"aa","b","cccc","ddd"};
Vector v = new Vector();
for(int i=0;i<str.length;i++)
{
v.add(str[i]);
}
Collections.sort(v, new Comp());
System.out.println(v);
}
}class Comp implements Comparator{ public int compare(Object o1, Object o2) {
int i1 = ((String)o1).length();
int i2 = ((String)o2).length();
if (i1 < i2){
return -1;
}
if (i1 > i2){
return 1;
}
return 0;
}
}