Collection集合02

Collection集合02

各个集合主要作用说明:
    List:
        ArrayList:查询 
        LinkedList:修改
        Vector:古老的ArrayList 
    Set:
        HashSet:剔重 
        LinkedHashSet:有序的HashSet 
        TreeSet:排序

List(有序,有下标,数据可重复)

list提供的方法
	//增
		add(int index, <E> element);
			/*			
			 * 	作用:将元素插入到集合指定位置
			 *	参数:
			 *		index : 添加位置	
			 *		element:要添加的元素
			 */
		addAll(int index, Collection c);
			/*			
			 * 	作用:将集合插入到当前集合集合指定位置
			 *	参数:
			 *		index:添加位置	
			 *	c :要添加的元素
			 */
	//删
		remove(int index);
			/*			
			 * 	作用:将集合中指定位置元素删除
			 *	参数:
			 *		index:删除的指定位置	
			 *	返回值:被删除的数据
			 */
	//改
		set(int index, <E> element);
			/*			
			 * 作用:修改集合指定位置元素
			 * 参数:
			 *		index : 要修改的位置	
			 *		element:修改后的元素
			 *	返回值:被修改的元素
			 */
	//查
		get(int index);
			/*			
			 * 作用:获取集合指定位置元素
			 * 参数:
			 *		index : 要获取的指定位置
			 *	返回值:获取的元素,原来集合不变
			 */
		indexOf(Object o);
			/*			
			 * 作用:获取元素在集合中的位置
			 * 参数:
			 *		index : 要查询元素
			 *	返回值:元素在集合中的位置,若元素在集合中不存在返回-1;
			 *	
			 */
		lastIndexOf(Object o);
			/*			
			 * 作用:获取元素在集合中最后一次出现的位置
			 * 参数:
			 *		index : 要查询元素
			 *	返回值:元素在集合中的位置,若元素在集合中不存在返回-1;
			 *	
			 */
		subList(int fromIndex, int toIndex)
			/*			
			 * 作用:截取集合中一段元素
			 * 参数:
			 *		fromIndex : 截取开始位置
			 *		toIndex:	截取结束位置
			 *	返回值:截取的集合,前面包含,后面不包含,原集合不变;
			 *	
			 */

ArrayList(查询快,增删慢,线程不安全,jdk1.2)<数组>

LinkedList(查询慢,增删块,jdk1.2)<链表>

Vector(查询快,增删慢,线程安全,jdk1.0)<数组>

ArrayList:
    数据结构:数组结构
    特点:查询快,增删慢
    		原因:
    			1.在内存中连续开辟一片空间,所以在寻找数组中所有数据计算机一次遍历内存即可.所以查询速度快
    			2.但是因为所以数据在同一片区域,此时如果给其中插入或删除一个数据,那么后面的数据位置都将需要修改.所以增删速度慢.

    出现时间:jdk1.2
LinkedList:
	数据结构:链表结构
	特点:查询慢,增删块
	出现时间jdk1.2
Voctor
    数据结构:数组结构
    特点:查询快,增删慢,线程安全;
    出现时间:jdk1.0
注意:
	List的子类没有提供特有方法;
	

Set(无序,无下标,数据不可重复)

set:
	Set自身没有特有方法
	都是来自collection提供的方法 
       存储原理:
              1.存储对象时,先调用对象的hashCode方法,获取hashCode值
              2.使用该hashCode值与集合中已经存储的对象的hashCode值进行比较
                  不相同:直接存储(存储到二叉树中)
                  3.不相同:调用该对象equals的方法已经存储的对象进行比较
                      false/不相同:存储到数组中.
                      true/相同:那么hashSet集合认为两个对象相同,去重;

HashSet()<数组+二叉树>

LinkedHashSet<数组+链表+二叉树>

TreeSet<二叉树>

HashSet
     jdk1.8以前:存储方法:数组+链表
     jdk1.8以后:存储方法:数组+二叉树
     	存储数据前后顺序是用hashCode的值来决定的.
              存储原理:
                  1.存储对象时,先调用对象的hashCode方法,获取hashCode值
                  2.使用该hashCode值与集合中已经存储的对象的hashCode值进行比较
                      不相同:直接存储(存储到二叉树中)
                      3.不相同:调用该对象equals的方法已经存储的对象进行比较
                          false/不相同:存储到数组中.
                          true/相同:那么hashSet集合认为两个对象相同,去重;
LinkedHashSet
		1.8以前:数组+链表
		1.8以后:数组+链表+二叉树
	注意:
		LinkedHashSet是有序的(比HashSet多了一条链表,来记录存储顺序)

TreeSet
		数据结构 : 二叉树
		注意:
			要么TreeSet存储数据时要么让数据具有比较性,要么在创建TreeSet时让数据指定比较器		1.让数据具有比较性:
		方法:
			就是让存储数据所属的类实现comparable接口,重写方法重写compareTo()方法;
				(要实现Comparable接口时,就是要重写compareTo()方法)
	2.指定比较器:
		方法:
			在创建TreeSet集合时,传入实现了Compartor接口的对象;
			常用匿名内部内实现;
注意:
	1.八大基本数据类型的包装类和String都已经实现了implements了Comparable接口,重写了compareTo()方法,不需要我们在去实现了
	
            	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值