乐鱼电竞



  • 教育行业A股IPO第一股(股票代码 003032)

    全国咨询/投诉热线:400-618-4000

    集合类各种容器的使用注意细节

    更新时间:2018年08月06日14时24分 来源:乐鱼播客 浏览次数:

      (1)迭代器:

      **迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。

      也就是在迭代循环中调用一次next方法一次就要hasNext判断一次,比如语句

      sop(it.next()+"..."+it.next())会发生上述异常。

      **迭代器的next方法返回值类型是Object,所以要记得类型转换,应用泛型后就不用强转

      (2)List集合:

      **List集合里面的元素因为是带角标,所以List集合里面的元素都是有序的,

      另外List集合可以包含重复元素,也可以包含null。

      **List集合有迭代器Iterator,还有一个特有迭代器列表ListIterator

      **List集合中判断元素是否相同都是用equals方法,无论contains、remove都依赖equals方法

      比如往ArrayList集合里面存放学生,同名同年龄视为同一个人,此时就需要在学生类复写Object类

      里面的equals方法(非常重要!!!要注意!!)

      (3)Set集合:

      **Set接口里面存放的是元素是无序的,不可以有重复元素,可以包含null

      **Set集合只有一种取出方式,就是迭代器Iterator

      **Set集合功能和Collection是一致的,没有特殊方法

      |--->HashSet:

      **集合里面存放的元素是无序的,唯一的

      **底层数据结构是哈希表,哈希表结构的数据都是无序的,哈希表结构的操作效率都高效

      **线程不同步

      **保证元素唯一性的原理是:通过复写hashCode和equals方法

      ****如果两元素的hashCode值相同,则继续判断两元素equals是否为真

      ****如果两元素的hashCode值不同,则不会调用equals方法。

      **当我们往HashSet集合存放自定义的元素时(比如学生对象),通常都要复写hashCode和equals方法,

      而且hashCode和equals方法不通过我们调用,HashSet集合底层内部自己调用,自己拿元素去比较

      |--->TreeSet

      **TreeSet集合可以对存放的元素进行排序,弥补了Set集合元素无序的缺点,且元素是唯一的

      **底层数据结构是二叉树,二叉树结构都是有序的

      **线程不同步

      **TreeSet集合要求往集合里存放的元素自身具备比较性,否则会报错

      **TreeSet集合保证元素唯一性的依据是:通过compareTo或者compare方法中的来保证元素的唯一性。

      TreeSet排序的第一种方式:让元素自身具备比较性,

      定义元素类实现Compareble接口,覆盖compare方法,

      此方式是元素的自然顺序。

      TreeSet排序的第二种方式:让集合具备比较性

      当元素自身不具备比较性或者具备的比较性不是

      我们所需要的比较性时,此时就需要让集合具备自定义的比较性。

      那如何让集合自身具备比较性呢?

      可在集合初始化时,就让集合具备比较方式。

      即定义一个类,实现Comparator接口,覆盖compare方法。

      注:

      **判断元素唯一时,当主要条件一样时,判断次要条件

      **两种排序方式都在时,以比较器为主!!!

      (4)Map集合:

      |--Hashtable

      底层是哈希表结构

      线程安全的,并且键和值不能为null。

      |--HashMap

      底层是哈希表结构

      线程不安全的,键和值可以为null。

      |--LinkedHashMap

      底层是链表和哈希表

      线程不安全

      |--TreeMap

      底层是二叉树

      线程不安全的


      作者:乐鱼播客JavaEE培训学院

      首发:http://java.itcast.cn/

    0 分享到:
    和我们在线交谈!
    【网站地图】【sitemap】