您的位置:首页 > 编程语言 > Java开发

Java集合—Collection篇

2015-08-28 11:26 417 查看
     说到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集合类进行操作的工具类,提供了一系列的静态方法

  三、小结

      通过一篇博客总结一个阶段的学习,可以很好的梳理学过的知识点,也会有自己新的理解出现

      有关于集合的东西有很多,需要不断的敲代码,达到熟练使用


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息