黑马程序员技术交流社区

标题: 关于集合类的总结,不清楚的可以来看看。 [打印本页]

作者: 然后呢8908    时间: 2015-9-18 21:29
标题: 关于集合类的总结,不清楚的可以来看看。
集合的特点:

1、用于存储对象的容器
*  2、集合的长度是可变的
*  3、集合中不可以存储基本数据类型值
*  
*  
*  Collection
*    |---List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复
*       |--Vector:内部是数组数据结构,是同步的,增删,查询都很慢!
*       |--ArrayList:内部是数组数据结构,是不同步的,替代了Vector,查询的速度快
*       |--LinkedList:内部是链表数据结构,是不同步的 ,增删元素的速度快
*                 既然是增删快,那个对应的方法是addFirst,addLast...
*    |---Set:元素不能重复,无序。(Set接口中的方法和Collection一致)
         |--HashSet:内部是哈希表数据结构,是不同步的
                    如何保证元素唯一性的呢?   由hashCode()和equals()保证的
                                如果对象的hashCode值不同,那就不用判断equals方法,就直接存储到哈希表中
                                如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true
                                如果 为true,即视为相同元素,不存,如果为false,那么视为不同元素,就进行存储
         |--TreeSet:可以对Set集合中的元素进行排序,是不同步的
                    TreeSet对元素进行排序的方式之一:
                                让元素自身具备比较功能,就需要实现Comparable接口,覆盖compareTo方法            
                    可以使用TreeSet集合使用第二种排序方式之二:( 如果不要按照对象中具备的自然顺序进行排序)
                                让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法,
                                 讲该类对象作为参数传递给TreeSet集合的构造方法   
                        
                        
*  List:特有的常见方法:有一个共性特点就是都可以操作角标
Collection集合总结
Collection
|--List        有序,可重复
   |--ArrayList
      底层数据结构是数组,查询快,增删慢。
      线程不安全,效率高
  |--Vector
     底层数据结构是数组,查询快,增删慢。
     线程安全,效率低
  |--LinkedList
     底层数据结构是链表,查询慢,增删快。
     线程不安全,效率高
|--Set        无序,唯一
  |--HashSet
    底层数据结构是哈希表。
     如何保证元素唯一性的呢?
     依赖两个方法:hashCode()和equals()
     开发中自动生成这两个方法即可
  |--LinkedHashSet
    底层数据结构是链表和哈希表
    由链表保证元素有序
    由哈希表保证元素唯一
|--TreeSet
    底层数据结构是红黑树。
    如何保证元素排序的呢?
   自然排序    对象实现Comparable接口
   比较器排序   集合实现Compartor接口
   如何保证元素唯一性的呢?
   根据比较的返回值是否是0来决定
针对Collection集合我们到底使用谁呢?
唯一吗?
    是:Set
        排序吗?
           是:TreeSet
           否:HashSet
如果你知道是Set,但是不知道是哪个Set,就用HashSet。
   否:List
       要安全吗?
            是:Vector
            否:ArrayList或者LinkedList
                  查询多:ArrayList
                 增删多:LinkedList
         如果你知道是List,但是不知道是哪个List,就用ArrayList。
         如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。
         如果你知道用集合,就用ArrayList。
作者: 然后呢8908    时间: 2015-9-19 21:30
912098812 发表于 2015-9-19 21:30
点赞点赞~~~

没有送的吗
作者: liupanpan    时间: 2015-9-19 21:42
赞一个!




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