黑马程序员技术交流社区

标题: 有序无序的问题 [打印本页]

作者: 雨下阳光    时间: 2014-9-30 11:41
标题: 有序无序的问题
Set集合不是无序的吗?为什么它的子集合TreeSet又说是有序的?这该如何理解?
作者: 水竹    时间: 2014-9-30 11:57
所谓的Set集合无序说的是没有放入的顺序,就是说比如你先放个object2、再放个object1、再放个object3,这三个对象在Set集合之中并不一定会按照2、1、3的顺序放着,即不会记录你放入的顺序;TreeSet集合是在放入元素的时候按照“规则”对其进行排序,也不是按照你放入的顺序,这里的两种顺序是不同的。
作者: 嘿~~    时间: 2014-9-30 12:33
因为TreeSet可以定义比较器啊
作者: 张业婷    时间: 2014-9-30 14:19
set集合最主要的特点不是有序还是无序,是不能存储重复的元素。至于有序list和set的实现类里都有有序的集合类
作者: 李春丽    时间: 2014-9-30 16:02
其实有些问题是不用过于纠结的。对写程序有主力就行啦。
作者: 千里马    时间: 2014-9-30 20:43
      Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素。Set接口的定义:public interface Set<E>extends Collection<E>
      Set接口的主要方法与Collection是一致,也就是说Set接口并没有对Collection接口进行扩充,只是比Collection接口更加严格了,不能增加重复元素。
      而Set计控常用的子类:1、散列的存放:HashSet类,其主要特点是:里面不能存放重复元素,而且采用散列的存储方式    2、有序的存放:TreeSet  其定义:public class TreeSet<E>extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable     根据定义可以看到,TreeSet中的元素是有序存放,所以对于每个对象必须指定好其排序规则,且TreeSet中的每个对象所在的类必须实现Comparable接口才可以正常使用。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2