Java集合—Collection篇

     说到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集合类进行操作的工具类,提供了一系列的静态方法
  三、小结
      通过一篇博客总结一个阶段的学习,可以很好的梳理学过的知识点,也会有自己新的理解出现
      有关于集合的东西有很多,需要不断的敲代码,达到熟练使用

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值