2019北京培训:Java集合复习

集合可分为:List、Set、Map

----Iterable接口:提供了iterator方法,用来返回一个迭代器对象,可以遍历一个集合中所有的元素所有实现了此接口的类的对象,可是使用for遍历语句遍历

--------Collection接口:每个元素都是一个对象   一个:和Map区分对象:不能保存基本类型  没有直接的实现类

------------List接口:元素有顺序(下标) 遍历方式:下标遍历、迭代器遍历(Iterator、for)

----------------ArrayList类:使用数组实现的顺序表,元素保存的顺序和下标相同,查找和修改元素效率高,增加和删除元素效率低。

----------------LinkedList类:使用节点组成的双链表,元素的顺序和下标可能不同,查找和修改效率低,增加和删除效率高。

----------------Vector类:使用数组实现的顺序表,特点和ArrayList类似,线程安全。

------------Set接口:元素不重复,只能使用迭代器遍历

----------------HashSet类:使用数组实现,保存元素的顺序和增加的顺序可能不同,取决于hashCode(),保存的元素对象所属的类的要重写equals()方法和hashCode()方法,保证元素内容不重复

--------------------LinkedHashSet类:使用链表实现,保存元素的顺序和增加的顺序相同。

----------------TreeSet类:实现了Set接口的子接口SortedSet,可以给插入的元素排序提供排序规则的方式:①元素对象所属的类实现Comparable接口,通过compareTo方式。②提供创建TreeSet对象时,使用一个Comparator类型的参数,可以按照compare()方法提供的规则排序。

----Map接口:一个元素是两个对象:键对象key,值对象value。功能:根据键对象查找值对象。遍历:①键遍历:keySet() ②值遍历:values() ③键值遍历:entrySet()

--------HashMap类:根据键对象的hashcode决定存放的位置键对象不能重复,如果重复,会替换对应的值对象。要保证键对象不重复,需要键对象所属的类重写equals()方法和hashCode()方法。

------------LinkedHashMap类:使用链表实现,键值对保存的顺序和插入的顺序相同。

--------TreeMap类:给插入的键值对按照键对象排序,需要键对象所属的类实现Comparable接口,也可以使用Comparator排序,原理同TreeSet。

--------HashTable类:原理同HashMap相同,线程安全,不允许键值对象中出现null。

------------Properties类:读取properties配置文件

----Iterator接口:迭代器,用来保存一个集合对象中的所有元素,然后遍历。优点:不会暴露list内部细节,安全。

 

对于HashMap与HashSet的个人理解:HashSet的底层实现是HashMap,可以理解为将其键封装。当碰到冲突问题时,HashSet的处理方式是:先通过HashCode方法计算哈希码值,如产生冲突,调用对象的equals方法进行判断,如返回true,则不添加(set集合元素不可重复),如返回false,则在该哈希码地址对应的对象后加一个节点来存放该数据(链表)。HashMap:先通过HashCode方法计算键的哈希码值,如相同则通过对象的equals()方法判断,返回true则将value覆盖原来键对应的value,如为false则用后接链表的方式处理冲突。

HashTable与HashMap:HashTable因线程安全所以效率低下,除键值对不能为null外其余与HashMap一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值