A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘俊佳 于 2012-7-26 08:35 编辑

这是代码:

package collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class CollectionsDemo
{
public static void main(String[] args)
{
  sortDemo();
}
public static void sortDemo()
{
  Set<String> list=new TreeSet<String>();
  
  list.add("abcd");
  list.add("aaa");
  list.add("z");
  list.add("kkkkk");
  list.add("qq");
  list.add("z");
  sop(list);
  
  Collections.sort(list);
  
  sop(list);
   
}
public static void sop(Object obj)
{
  System.out.println(obj);
}
}
下面是打印错误信息,为什么sort能够对List集合中的元素排序而不能对Set集合中的元素进行排序啊?

OE`ROV{73EW2}]@$39QX6Q1.jpg (40.16 KB, 下载次数: 44)

OE`ROV{73EW2}]@$39QX6Q1.jpg

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
楼猪,待会你仔细看下API,然后再自己练习一下,我就不给你贴代码了,Collections里sort排序的方法有两个,一个是操作list的,静态方法sort(List<T> list);
另一个是:sort(List<T> list, Comparator<? super T> c) ,传一个list集合,还有自定义比较器。方法里都明确了必须传list的了,就别传set类型的集合咯
对于set的排序,一般都是treeSet自定义比较器,自定义比较器的使用会不?不会另外问个问题,我给你回答吧。

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
API文档关于collections的方法sort:
sort(List<T> list) :根据元素的自然顺序 对指定列表按升序进行排序。
它已经限定只对List集合进行排序
回复 使用道具 举报
王艺霖 发表于 2012-7-25 21:45
collections  这个类的sort排序方法规定只能放list型的   上面的是源代码

都给分了 啊哈哈
回复 使用道具 举报
Collections只提供了对List的排序方法,请参阅API,并且集合所装的元素必须实现Comparable接口。
你用的TreeSet底层实现是利用红黑树,它天生就支持排序,但装的元素要么实现Comparable接口,或者是在TreeSet实例化时创造一个实现Comparator接口的对象(此类实现了比较元素的compare()方法)当参数,不必使用Collections辅助的:
  1.                 TreeSet<String> ts = new TreeSet<String>();
  2.                 ts.add("3");
  3.                 ts.add("2");
  4.                 ts.add("1");
  5.                 ts.add("4");
  6.                 ts.add("5");
  7.                 for(String s : ts){
  8.                         System.out.println(s);
  9.                 }
  10.                
复制代码
String 本身实现了Comparable接口。


回复 使用道具 举报
王艺霖 发表于 2012-7-25 22:13
你好像是跟我一班的  在飞秋上看过你名字

……………………那个高个胖子,和金龙一起的,哎
回复 使用道具 举报
谢谢楼上各位的解答,学习了,下次看API我会多注意点{:soso_e127:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马