黑马程序员技术交流社区

标题: 集合 [打印本页]

作者: 695212308    时间: 2016-8-10 13:19
标题: 集合
集合学的迷迷糊糊的怎么办啊

无标题.png (77.12 KB, 下载次数: 10)

无标题.png

作者: zaoan    时间: 2016-8-10 17:13
多看几遍,第二遍比第一遍听的容易,第三遍不懂也会懂了,加油哥们
作者: 夏:默秋凉    时间: 2016-8-10 19:03
单列集合的顶层是Collection接口,包括List和Set集合。双列集合的顶层接口是Map。我们先来说下单列集合:
(1.1)List集合的特点是元素可重复,有序,有索引,能够有角标操作集合,有特有的迭代方式ListIterator。包括ArrayList、LinkedList和Vector。
ArrayList集合底层采用的是数组数据结构,查询速度比较快,因为数组有索引,在内存中分配的空间是连续的,但是增删比较慢。线程不同步,效率高。初始容量为10。
LinkedList集合的底层采用的是链表数据结构,增删速度比较快,查询速度比较慢。线程不同步。
Vector底层数据结构也是数组数据结构,但是线程同步,效率低,特有取出元素的方式是枚举。因为效率低,逐步被ArrayList替代。
(1.2) Set集合的特点元素是无序的(存入和取出的顺序不一致),元素不可以重复。包括HashSet和TreeSet。
        HashSet的底层数据结构是哈希表,线程不同步,效率高。保证元素的唯一性额有的依据是元素的hashCode和equals方法。如果hashCode不同,不调用equals方法。如果hashCode相同,才会调用equals方法判断元素是否相同。
        TreeSet的底层数据结构是二叉树,线程不同步,效率高。能够给元素进行排序。保证元素唯一性的依据是compareTo和return0。排序的两种方式:第一种元素自身实现Comparable接口,重写compareTo()方法。这种排序方式叫元素的自热排序,也叫默认排序。第二种是当元素自身不具备比较性或者具备的比较性不是所需要的,这时就让集合自身具备比较性,当集合初始化时就有了比较性。定义一个比较器实现Comparator接口,重写compare方法,定义集合的时候将比较器作为参数传递给TreeSet的构造函数,这样集合就具有了比较性。
(2)Map是双列集合的顶层接口,该集合存储的是键值对,一对一对的往里存,而且要保证键的唯一性。包括Hashtable、HashMap、TreeMap。
        Hashtable的底层数据结构是哈希表,不可以存储null键和null值,线程同步,效率低。JDK1.0.
        HashMap的底层数据结构是哈希表,可以存储null键和null值,线程不同步,将Hashtable替代,JDK1.2效率高。保证键的唯一性的 依据是hashCode和equals方法。
        TreeMap的底层数据结构是二叉树,线程不安全,能够给集合中的键排序。

95.什么时候使用什么集合?
答:(1)首先要看是单列还是双列,是单列的话就用Collection,双列就用Map。
(2)要是单列的话看元素是不是要求重复,元素重复的话使用List,看查询多还是增删多,查询多的话用ArrayList,增删多的话用LinkedList,不确定的话用ArrayList。不重复的话使用Set,看是否要求排序,排序的话用TreeSet,不需要排序用HashSet。不确定的话用HashSet。
(3)要是双列的话,看是否要求排序,要求排序用TreeMap,不要求排序用HashMap,不确定的话用HashMap。
作者: 695212308    时间: 2016-9-4 19:34
zaoan 发表于 2016-8-10 17:13
多看几遍,第二遍比第一遍听的容易,第三遍不懂也会懂了,加油哥们

谢谢,我会加油的,现在感觉英语单词量好大,我英语一点基础都没有
作者: 梦想的小草    时间: 2016-9-4 20:54
有什么会就问呀
作者: 孙洪勇    时间: 2016-9-4 21:04
根据单双列选collection还是map,根据是否重复有序选list还是set
作者: LShu    时间: 2016-9-5 15:10
多多练习,多敲代码是最好的解决方案.
作者: zhao0506    时间: 2016-9-5 15:50
多看 多记
作者: a825125501    时间: 2016-9-5 16:00
一个字 多敲,集合这边方法多 敲多了 自然而然就懂得了
作者: Ssafe    时间: 2016-9-5 18:10
先熟悉集合的结构和他们的特点吧,然后再多加练习咯
作者: zwy1174    时间: 2016-9-5 22:30
键盘敲烂,一定会的




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