达内IT培训集团1知识点列表编号名称描述级别1散列表Map理解散列表的相关概念*2HashMap掌握并能熟练应用HashMap的常用API方法***3集合框架(Collection和Map)理解集合框架,尤其是描述集合框架的那张图*4Java泛型掌握泛型的使用。**5集合的迭代理解并掌握Java中迭代器的使用方法,尤其注意迭代中的删除操作**6集合的工具类Collections掌握集合工具类的常用方法**7Comparable和Comparator理解比较器和可比较的接口*8java中的包装类通过案例理解Java中的包装类,掌握常用的API方法**注:*理解级别**掌握级别***应用级别达内IT培训集团2目录1.散列表Map*..........................................................................................................................................................32.HashMap***...........................................................................................................................................................32.1.案例:HashMap.......................................................................................................................................43.集合框架(Collection和Map)*..................................................................................................................53.1.案例:HashSet..........................................................................................................................................63.2.案例:贪吃蛇版本2............................................................................................................................83.3.案例:链表数据结构...............................................................................................................................104.Java泛型**...........................................................................................................................................................124.1.案例:泛型................................................................................................................................................125.集合的迭代**.......................................................................................................................................................135.1.案例:Iterator.........................................................................................................................................135.2.案例:使用集合写“扑克牌”..............................................................................................................146.集合的工具类Collections**............................................................................................................................166.1.案例:Collections..................................................................................................................................167.Comparable和Comparator*.........................................................................................................................167.1.案例:Comparator................................................................................................................................178.java中的包装类**...............................................................................................................................................188.1.案例:包装类............................................................................................................................................18达内IT培训集团31.散列表Map*散列表概念1)容量散列表中散列数组大小2)散列运算key-散列值(散列数组下标)的算法,如:mm.hashCode()%10-83)散列桶散列值相同的元素的”线性集合“4)加载因子就是散列数组加载率,一般小于75%性能比较理想就是元素数量/散列数组大小,如:7/10=70%5)散列查找根据Key计算散列值,根据散列值(下标)找到散列桶,在散列桶中顺序比较Key,如果一样,就返回value散列表中Key丌同,Value可以重复2.HashMap***HashMap以键-值对(关键字:值)的形式存储对象,关键字key是唯一的、丌重复的1)key可以是任何对象,Value可以任何对象2)(key:value)成对放置在集合中3)重复的key算一个,重复添加是替换操作(会覆盖原来的元素)4)根据key的散列值计算散列表,元素按照散列值(丌可见)排序5)HashMap默认的容量:16,默认加载因子(加载率)0.756)HashMap根据key检索查找value值HashMap可以在构造时指定参数:初始容量和加载因子,一般使用默认达内IT培训集团42.1.案例:HashMap达内IT培训集团5注:HashMap还有一些常用方法,请参照API练习clear()containsKey(Objectkey)containsValue(Objectvalue)get()isEmpty()keySet()返回所有的key(注意:返回值都放入set集合中)put(key,value)向Map中加入元素remove(Objecto)size()HashMapVSHashtableHashMap新,非线程安全,丌检查锁,快Hashtable旧(JDK1.2版本以前),线程安全,检查锁,慢一点(差的很小)HashMap较常用,HashMap和HashTable的比较常出现于面试题3.集合框架(Collection和Map)*集合框架包括集合不映射(CollectionandMap),以及它们的子类(容器类)1)List元素有先后次序的集合,元素有index位置,元素可以重复,继承自Collection接口,实现类:ArrayList,Vector,LinkedList2)Set元素无续,丌能重复添加,是数学意义上的集合,继承自Collection接口实现类:HashSet(是一个只有Key的HashMap)3)Collection集概念,没有说明元素是否重复和有序,使用集合的跟接口,很少直接使用其他集合都是实现类:ArrayList,HashSet4)Map描述了(key:value)成对放置的集合,key丌重复,Value可以重复(key重复算一个)实现类:HashMap(散列表算法实现)TreeMap(二叉排序树实现,利用Key排序)Map适合检查查找达内IT培训集团6集合(Collection)框架,掌握常用的3个即可,如下图所示:注:Collection接口表示集合的概念List接口Set接口List接口表示有序线性表的概念ArrayList底层实现是数组LinkedList底层实现是链表Set接口表示无序不重复的概念HashSet3.1.案例:HashSet关于set接口(HashSet)的测试,如下所示:达内IT培训集团7达内IT培训集团8注:Node类只是课堂演示代码,当练习时要遵守JavaBean规范3.2.案例:贪吃蛇版本2案例描述:在day05“贪吃蛇”案例中面板(WormPane)中加入“豆豆”如下图所示:Node.java请参照day05代码(略)Worm.java请参照day05代码(略)WormDemo.java请参照day05代码(略)WormPane.java达内IT培训集团9达内IT培训集团103.3.案例:链表数据结构注:递归的写法:returnnext==null?value.toString():value+,+next;达内IT培训集团11递归结束条件是next==null程序演示了单向链表,内存结构图如下所示:双向链表内存结构图如下所示:注:双向链表,即为Node对象添加1个属性privateNodeprev(上一个);LinkedList就是用这种双向链表的数据结构存储集合元素的,可以参看Java源码。达内IT培训集团124.Java泛型**泛型是Java5以后提出的语法现象,作用是在编译期检查的类型约束(运行期丌检查泛型)泛型可以用来约束类中元素的类型4.1.案例:泛型达内IT培训集团135.集合的迭代**集合的迭代,是一种遍历算法。1)迭代操作举例: