JAVASE之Set和Map

Set集合体系

特点:存入集合的顺序和取出集合的顺序不一致

没有索引

存入集合的元素没有重复

Set中的具体实现hashSet如何保证存入的元素唯一性.

新添加到HashSet集合的元素都会与集合中已有的元素一一比较.

首先比较哈希值(每个元素都会调用hashCode()产生一个哈希值)

如果新添加的元素与集合中已有的元素的哈希值相同,此时还需要调用equals(Object obj)比较;

如果equals(Object obj)方法返回true,说明新添加的元素与集合中已有的某个元素的属性值相同,那么新添加的元素不存入集合.

如果equals(Object obj)方法返回false,说明新添加的元素与集合中已有的元素的属性值都不同,那么新添加的元素存入集合.

 

hashCode()方法优化:

如果让hashCode()方法返回一个固定值,那么每个新添加的元素都要调用equals(Object obj)方法比较,那么效率较低.

只需要让不同属性的值的元素产生不同的哈希值,那么就可以不再调用equals方法比较提高效率.

 

Collections的方法

CollectionsCollection的方法的区别:

Collection是集合体系的最顶层,包含了集合体系的共性

Collections是一个工具类,方法都是用于操作Collection.

Static void swap(List list,int i,int j):将指定列表中的两个索引进行位置互换.

Static void sort(List<T> list):按照列表中元素的自然顺序进行排序

Static void shuffle(List list):将集合list中的元素随机置换.

Static void reverse(List list):将集合中的数组list反转.

Static void fill(List list,Object obj):使用指定的对象填充指定列表的所有元素.

Static void copy(List dest,List src):把源列表中的数据覆盖到目标列表中(dest列表的长度大于等于src列表的长度)

Static int binarySearch(List list,Object key)使用二分查找法查找指定元素在指定列表的索引位置.

 

Map集合

MapCollection综述:

Collection中的集合,元素是孤立存在的(单列集合,单身汉集合),向集合中存储元素采用一个个元素的方式存储

Map中的集合,元素是成对存在的(双列集合,夫妻对集合).每个元素由键与值两部分组成,通过键可以找对应的值.

Map中的集合不能包含重复的键,值是可以重复的;每个键只能对应一个值.

 

 

 

Map常用方法:

映射功能:

V put (K key,V value):以键=值的方式存入Map集合

获取功能:

V get(Object key):根据键获取值

Int size();返回Map中键值对的个数

判断功能:

Boolean containsKey(Object key):判断Map集合总是否包含键为key的键值对

Boolean containsValue(Object value):判断Map集合中是否包含值为value的键值对.

Boolean isEmpty():判断Map集合中是否含有键值对.

删除功能:

Void clear();清空Map集合中所有的键值对.

V remove(Object key);根据键值删除Map中键值对.

遍历功能:

Set<Map.Entry<K,V>> entrySet();将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回.

Set<K> keySet();Map中所有的键装到Set集合中返回.

Collection<V> values();返回集合中所有的value的值的集合.

 

 

Map的两种遍历方式:

keySet();

首先召集所有的丈夫,返回的即是一个set集合.所有的key的集合.

遍历所有的丈夫

获取每一个丈夫,让每一个丈夫去找自己的老婆.

 

 

Set<String> keys = map.keySet();

for( String key :keys){

String value = map.get(key);

}

entrySet()结婚证对象

Set<Map.Entry<String,String>> entrys = map.entrySet();

for(Map.Entry<String,String>  entry :entrys){

String key = entry.getKey();

String value=entry.getValue();

}

 


未完待续

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值