黑马程序员技术交流社区
标题:
集合排序问题
[打印本页]
作者:
蓝枫
时间:
2014-3-26 17:50
标题:
集合排序问题
import java.util.*;
class CollectionsDemo
{
public static void main(String[] args)
{
sortDemo();
}
public static void sortDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
sop(list);
Collections.sort(list,new StrLenComparator());
sop(list);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class StrLenComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
if(s1.length()>s2.length())
return 1;
if(s1.length()<s1.length())
return -1;
return s1.compareTo(s2);
}
}
复制代码
想对集合中字符串的长度进行排序,为什么输出的结果不对!哪位兄弟帮忙看一下上面的程序那地方出错了!
作者:
linweiwen
时间:
2014-3-26 21:02
题目看不太懂,楼主你是想这样吗?
原来的: [abcd, aaa, zz, kkkkk, qq, z]
排序后的: [z,qq,zz,aaa, abcd,kkkkk ]
作者:
osully
时间:
2014-3-26 21:09
比较器写的不对,看下下面的吧
import java.util.*;
public class CollectionsDemo {
public static void main(String[] args) {
sortDemo();
}
public static void sortDemo() {
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
sop(list);
Collections.sort(list, new StrLenComparator());
sop(list);
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
class StrLenComparator implements Comparator<String> {
public int compare(String s1, String s2) {
if(s1.length()==s2.length())
return s1.compareTo(s2);
return new Integer(s1.length()).compareTo(new Integer(s2.length()));
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2