黑马程序员技术交流社区

标题: 什么时候使用集合 [打印本页]

作者: 芒果小姐    时间: 2016-7-27 11:11
标题: 什么时候使用集合
什么时候使用集合~
作者: 觅离    时间: 2016-7-27 23:04
由于我们使用的是面向对象语言,所以,我们要经常使用对象。而很多时候,我们可能需要使用很的对象,这个时候,我们就只能使用以前讲过的数组进行存储了,而数组的特点是长度固定。这样的话就不适合变化的数据。所以,java重新提供了一种容器,用于存储对象,这种容器叫集合
作者: rockphoenix    时间: 2016-7-28 00:03
首先先了解数组和集合的区别,数组长度在初始化后就不可改变,可以存储基础数据类型和引用数据类型,而集合只能存储引用数据类型,长度可变,当我们想要把若干个元素存入数组却发现我们再想存的时候数组长度已经固定了需要重新定义,太麻烦,这个时候集合就派上用场了,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少。且集合是一个很宽的概念,集合体系中有不同类型的集合,个人觉得功能更广泛。
集合分为单列集合和双列集合,单列集合有List和Set,List存取有序,有索引,可以存储重复元素;Set存取无序,无索引,不能存储重复。
List中ArrayList底层为数组,查询快,增删慢,线程不安全,效率高
LinkedList底层为链表,查询慢,增删快,线程不安全,效率高
Vector底层为数组,查询慢,增删慢,线程安全,JDK1.2开始被ArrayList替代

Set中HashSet底层为哈希表,线程不安全,我们可以重写HashCode和equals两个方法来保证元素的唯一性
TreeSet底层为二叉树,TreeSet是会将元素自动排序且唯一的。元素具备比较性时则使用自然排序,实现Comparable接口,重写compareTo方法;不具备比较性时,则使用比较器比较,实现Compartor接口,重写compare方法,一般在创建集合对象时以匿名内部类形式创建
其实这些都是概念,当然还有双列集合,懒得打了贴上来好了
|--Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
        |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
        |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
        |--TreeMap:底层是二叉树数据结构。不同步。可以用于给map集合中的键进行排序。
        |--和Set很像。其实,Set底层就是使用了Map集合
作者: miqideliwu    时间: 2016-7-28 00:23
坚持几天就会用到了
作者: 芒果小姐    时间: 2016-7-28 18:18
觅离 发表于 2016-7-27 23:04
由于我们使用的是面向对象语言,所以,我们要经常使用对象。而很多时候,我们可能需要使用很的对象,这个时 ...

嗯嗯~学习啦
作者: 芒果小姐    时间: 2016-7-28 18:20
rockphoenix 发表于 2016-7-28 00:03
首先先了解数组和集合的区别,数组长度在初始化后就不可改变,可以存储基础数据类型和引用数据类型,而集合 ...

恩呐 谢谢咯~ 学习啦
作者: yin12310    时间: 2016-7-28 18:33
想用的时候就用啊
作者: Zilu丶yue    时间: 2016-7-28 19:00
路过。。。帮水
作者: WatingU    时间: 2016-7-28 20:05
想用就用,哈哈哈哈




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