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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雨下阳光 中级黑马   /  2014-9-30 11:41  /  1398 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Set集合不是无序的吗?为什么它的子集合TreeSet又说是有序的?这该如何理解?

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

5 个回复

倒序浏览
所谓的Set集合无序说的是没有放入的顺序,就是说比如你先放个object2、再放个object1、再放个object3,这三个对象在Set集合之中并不一定会按照2、1、3的顺序放着,即不会记录你放入的顺序;TreeSet集合是在放入元素的时候按照“规则”对其进行排序,也不是按照你放入的顺序,这里的两种顺序是不同的。

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

回复 使用道具 举报
因为TreeSet可以定义比较器啊
回复 使用道具 举报
set集合最主要的特点不是有序还是无序,是不能存储重复的元素。至于有序list和set的实现类里都有有序的集合类
回复 使用道具 举报
其实有些问题是不用过于纠结的。对写程序有主力就行啦。
回复 使用道具 举报
      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接口才可以正常使用。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马