说到Collection集合不得不提的就是数组,Java中的数组为我们存储大量的数据提供了很大的方便,但
是数组也有很多缺点,不够灵活
1.数组被定义后长度就是固定的,但是实际开发中数据长度常常是不固定的
2.数组中只能存放同种类型的数据,但是要在一个数组中存放多种数据类型的数据就不行了
为了解决数组的弊端,集合就应声而出
一、Collection集合体系简介
集合是用来存放多个元素,由于底层数据结构的不同,Java就提供了多种集合类,而这些集合类都有共
性的东西,然后不断向上抽取这些公性,便形成了集合体系
Collection集合只能用来存放对象;长度不固定;可以存储多种类型对象(一般只存储一种)
框架
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
二、详解
Iterator是用于专门对Collection进行迭代的迭代器,详见Java的API
Collection
超类,存放着对数据增删改查的公共方法
Iterator用法:
//通过多态创建Collection对象c并且指向子类ArrayList //<String>这是泛型,相当于一个标签,指定此对象中存放的是String类型 Collection<String> c = new ArrayList<String>(); c.add("a"); c.add("b"); c.add("c"); //通过多态创建对象c的迭代器 Iterator<String> it = c.iterator(); //遍历c中的每一个元素并输出 while(it.hasNext()){ System.out.println(it.next()); }
Collection中的其他方法查API即可
1.List
List集合是有序的,元素可以不唯一
Iterator迭代器有也有专门迭代List的迭代器--->ListIterator(即Iterator子接口)
在用Iterator时有时会发生并发修改异常这时就可以用ListIterator来解决
1>ArrayList
数据结构:底层是数组
优点:查询快,增删慢
线程不是同步的,所以不安全,但是效率高
2>Vector(现在很少用)
数据结构:底层是数组结构
优点:查询快,增删慢
线程同步,所以比较安全,但是效率低
3>LinkedList
数据结构:底层是链表(首尾相接)
优点:查询慢,增删快
线程不同步,所以不安全,但是效率高
2.Set
Set集合无序(存储和取出的顺序不同),但是元素唯一
1>HashSet
底层是哈希表(哈希值是用来标示元素身份的,但不能保证唯一性)
特性:
a.不能保证数据的迭代顺序恒久不变(可能每次迭代出的顺序都是不一样的)
b.唯一性:
通过hashCode()值和equals()来保证元素唯一性(两个方法都要重写)
hashCode()值是否相同
不同:走equals()方法,判断元素具体内容是否相同
True:元素重复,不添加到集合
False:元素不重复,添加到集合
相同:元素重复不添加
2>TreeSet
底层是二叉树,通过树的节点进行存储和获取
可以根据构造方法不同对元素进行自然排序或者比较器排序,在排序的同时就能保证唯一性
a.自然排序
无参构造,要求对象所属的类实现Comparable接口(即CompareTo方法)
b.比较器排序
带参构造,要求参数是一个已经实现Comparator接口的对象(涉及到匿名内部类的使用)
Collections工具类对Collection集合类进行操作的工具类,提供了一系列的静态方法
三、小结
通过一篇博客总结一个阶段的学习,可以很好的梳理学过的知识点,也会有自己新的理解出现
有关于集合的东西有很多,需要不断的敲代码,达到熟练使用
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/husen1314/article/details/48047687