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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liqi 中级黑马   /  2014-8-14 00:33  /  2606 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看完了集合后,自己对集合的整理:
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)方法;
      注意:当两种比较方式都存在是,以比较器为主;

13 个回复

倒序浏览
我勒个去。。 这不是视频里面都说过了吗 ? 这样能赚到技术分吗

点评

这孩子太实在了  发表于 2014-8-14 13:39
回复 使用道具 举报
;P楼主是在整理课堂笔记的吧
回复 使用道具 举报
huocaoxi 发表于 2014-8-14 01:08
楼主是在整理课堂笔记的吧

对啊,这样复习时较快吧
回复 使用道具 举报
一顿一只牛 发表于 2014-8-14 00:40
我勒个去。。 这不是视频里面都说过了吗 ? 这样能赚到技术分吗

你不把写出来,每次复习,或那个知识点忘了,每次都在那么多视频里查?
回复 使用道具 举报
课堂笔记?这样都可以????
回复 使用道具 举报
{:2_32:} 楼主还差一个MAP
回复 使用道具 举报
晓风 中级黑马 2014-8-14 07:24:32
8#
自己总结的还是不错的。赞一个
回复 使用道具 举报
liqi 中级黑马 2014-8-14 08:46:54
9#

Collection全了,Map下一次发
回复 使用道具 举报
liqi 中级黑马 2014-8-14 08:50:25
10#
晓风 发表于 2014-8-14 07:24
自己总结的还是不错的。赞一个

谢了     
回复 使用道具 举报
哎!这样行么?都记录老师讲的东西,直接写到博客,那大家不都一样了
回复 使用道具 举报
整理笔记最好在自己博客里整理吧 ?
回复 使用道具 举报
F@C 中级黑马 2014-8-14 12:59:11
13#
进来学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马