容器collection

容器Collection

一、List类

​ List存储的数据特点:有序的、允许重复

遍历Set容器的方式:

​ 1、foreach 增强for

​ 2、普通for循环

​ 3、Iterator<> 迭代器

1、ArrayList

​ 优点:底层实现是通过数组、所以根据索引查找数据的效率很高

​ 缺点:添加、删除,大量操作数据时不适用,效率比较低

​ 初始容量为10,扩容机制每次是原容量的1.5倍

2、Vector

和ArrayList类类似唯一区别:

​ 1.vector线程安全、ArrayList线程不安全

​ 2.每次扩容原容量的2倍,ArrayList是1.5倍,更有效的节省内存

3、LinkedList

​ 优点:增删效率高。

LinkedList底层是通过双向链表的方式现实存储数据的,链表结构中的元素是一节点为单位,一个节点中储存当前数据和下一节点的地址

二、Set

Set存储的数据特点无序的,不可重复

遍历Set容器的方式:

​ 1、foreach 增强for

​ 2、Iterator<> 迭代器

1、TreeSet

​ 有默认排序,去重

​ 底层: 红黑树(二叉树的一种),是由TreeMap维护

	特点: 有序的,默认升序排序 ,查询等效率高

​ 注意:存储自定义的引用数据类型的数据: 必须实现内部比较器|外部比较器–>去重+排序

2、HashSet

​ 无序、去重

​ 底层: 有哈希表结构实现的(数组+链表+红黑树), 内部是由HashMap维护

   优点: 查询,增加,删除效率高

	缺点: 无序,去重	

存储数据过程:

​ 1、使用hash算法对数据计算,决定储存在数组中的位置: 位置=数组%9 对于的方法是: hashCode()

​ 2、通过hash算法找到对应数组储存的位置后调用 euqals()方法判断当前位置是否有重复的数据,没有则存入,否则去重。

特点:

 	1、自定义类型对象去重: 需要重写hashCode()和equals()方法,不重写无法进入equals()比较内容的这一部,因为对象地址都是不同的算出来的hash值也不同。

​ 2、如果数组一个索引中存储了8个以上数据,转为使用红黑树的结构存储数据

三、Map

Map存储键值对的形式数据: Key-Value,Key和Value之间存在映射关系

Key: 无序的,不可重复。决定去重的条件,如果key相同,value会覆盖

Value:无序的,可以重复

2、HashMap

​ 如果key是对象类型时去重需要重写hashCode()和equals()

​ 认初始容量 (16):可以根据要存储数据设置 和默认加载因子 (0.75)

遍历:

​ 1.获取所有的key Set keySet()

Map<Integer,String> map=new HashMap();
map.put(01, "哪吒");
map.put(02, "烈火英雄");
 	Set<Integer> keys=map.keySet();
		for(Integer i:keys){
			System.out.println(i+"---->"+map.get(i));  //1,2
	}

​ 2.获取所有的值 Collection values()

	Collection<String> col=map.values();
		Iterator<String> it=col.iterator();
		while(it.hasNext()){
			System.out.println(it.next());//哪吒,烈火英雄
	}
   3.Set<Map.Entry<K,V>>     entrySet()  
	Set<Map.Entry<Integer,String>> set=map.entrySet();
		for(Map.Entry i:set){
			System.out.println(i.getKey()+"---->"+i.getValue());
        }//[{1,哪吒} ,{2,烈火英雄}]

1、TreeMap

​ 红黑树的结构默认升序排序

​ key是自定义引用数据类型: 内部比较器|外部比较器(在创建TreeMap构造器中指定)

四、比较器

1、内部比较器|自然排序

​ 实现 Comparable接口,重写compareTo()方法定义比较规则

2、外部比较器

​ 实现Comparator接口,重写compare()方法定义比较规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值