黑马程序员,黑马论坛-------Collection总结

文章来源:黑马程序员,黑马论坛

看完了集合后,自己对集合的整理:
Collection接口
       |--  List(子接口) 元素是有序的,且可重复
                   |--    Vector(实现类) 可以实现可增长的对象数组。和 ArrayList基本相同,但是 Vector是JDK1.0版本,线程同步的,效率低,已被 ArrayLis取代。
                   |--    ArrayList(实现类)数据结构为数组就够。线程不同步,效率高。查询速度快,但是插入,删除效率低;
                   |--     LinkedList(实现类)存储数据结构为线性表。线程不同步,效率高。查询速度慢,但是插入,删除效率高;
      |--(子接口)元素无序,且不可重复
                  |-- HashSet(实现类)存储数据结构为哈希表。
                  |-- TreeSet(实现类)对Set集合进行排序。
注意:看到 Set集合是无序的,但是它的实现类TreeSet为什么能排序?
           这是因为 List所说的有序,是存储的顺序和元素增加顺序相同;
                          Set集合是无序,指的是存储顺序和元素的增加顺序可能不相同;(注意:是可能不同,当然也可能相同)。
Collection: 取出全部元素的方法:iterator()迭代器方法,对集合元素的遍历,判断是否有下一个元素hasNext(),获取 next()
List:   特有方法。凡是可以操作角标的方法都是该体系特有的方法;
             List中的listIterator()方法:
                  即用Iterator类的iterator()方法只能用三个方法,有局限性。在获取元素是只能用迭代器的方法,只有三个hasNext(),next()和remove(),即对集合除了取出之外,只能做删           除操作。为了能更多操作,list集合使用了Iterator接口的子接口ListIterator。
      ArrayList:和List基本一样
      LinkedList: 特有方法,addFirst().addLast(),getFirst().getLast(),removeFirst().removeLast();
                           注:,removeFirst().removeLast();这两个方法和别的移除方法不一样,在移除前先返回移除的元素
                          
                    在新版本中出现了 peekFirst(),peekLast(),方法获得但不删除第一个/最后一个元素,如空则返回null
                                     pollFirst(),pollLast(),方法获得并删除元素,如空则返回null
Set:
      HashSet:比较元素相同分两步:第一步,比较元素的哈希值(调用hashCode()方法)
                                 第二步,比较该元素对象是否相同,调用equals()方法
              存储元素事先比较元素的哈希值和集合中的元素哈希值是否相同,不同,则存储。
              如果哈希值相同,则比较这两个哈希值相同元素是否相同,如果不同,则把该对象放在该哈希值延伸处,如果相同,则出现重复元素,不存储;
      TreeSet:可以给Set集合的元素排序,但是前提是存放的对象必须具备比较性;
            让对象具备比较性有两种方法:(1,元素自身具备比较性,2,集合具备比较性)
            1:实现Comparable接口,覆盖compareTo(Object obj)方法。这个接口强制对象具备比较性。
              注意:如果判断主要条件相同时,一定要判断次要条件;
            2:当对象不具备比较性,或需求改变了,不需要原来比较的条件,换一个比较条件,为了不在源代码里修改。
              这样就出现了第二种比较方式:让集合具备比较性,即在集合初始化时就有了比较方式;
              方法:定义了比较器,把比较器对象作为参数传个TreeSet的构造方法;
               怎样定义比较器:
                定义一个类,该类实现了Compator接口,需要覆盖compare(Object obj1,Object obj2)方法;
      注意:当两种比较方式都存在是,以比较器为主;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值