黑马程序员技术交流社区

标题: list和set的区别,可以存什么类型的元素?会自动排序吗? [打印本页]

作者: 751309401    时间: 2015-7-25 23:56
标题: list和set的区别,可以存什么类型的元素?会自动排序吗?
分别什么时候用这个两个接口的子类?里面的元素会自动排序吗

作者: 真实姓名被注册    时间: 2015-7-25 23:58
List元素可重复,Set不能重复,都不会自动排序,自动排序只有TreeSet
作者: guohognbo    时间: 2015-7-26 00:15
list无顺序,不唯一,set无顺序,唯一,treeset排序
作者: T-l-H、小生    时间: 2015-7-26 01:53
|--List(有序,可重复)
                                |--ArrayList
                                        底层数据结构是数组,查询快,增删慢。
                                        线程不安全,效率高。
                                |--Vector
                                        底层数据结构是数组,查询快,增删慢。
                                        线程安全,效率低。
                                |--LinkedList       
                                        底层数据结构是链表,查询慢,增删快。
                                        线程不安全,效率高。
                        |--Set(无序,唯一)
                                |--HashSet
                                        底层数据结构是哈希表。
                                        线程不安全,效率高。

                                        怎么保证唯一性的呢?
                                        它依赖两个方法:hashCode()和equals()
                                        顺序:
                                                首先判断hashCode()值是否相同。
                                                同:继续走equals(),看返回值
                                                        如果true:就不添加到集合。
                                                        如果false:就添加到集合。
                                                不同:就添加到集合。
                                |--TreeSet
                                        底层数据结构是二叉树。
                                        线程不安全,效率高。

                                        怎么保证唯一性的呢?是根据返回是否是0。
                                        怎么保证排序的呢?两种方式
                                                自然排序(元素具备比较性)
                                                        实现Comparable接口
                                                比较器排序(集合具备比较性)
作者: 陈鹏No1    时间: 2015-7-26 15:01
楼上好6啊,赞。
TreeSet是按ASCII默认排序的,其他的不会。




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