Set集合体系
特点:存入集合的顺序和取出集合的顺序不一致
没有索引
存入集合的元素没有重复
Set中的具体实现hashSet如何保证存入的元素唯一性.
新添加到HashSet集合的元素都会与集合中已有的元素一一比较.
首先比较哈希值(每个元素都会调用hashCode()产生一个哈希值)
如果新添加的元素与集合中已有的元素的哈希值相同,此时还需要调用equals(Object obj)比较;
如果equals(Object obj)方法返回true,说明新添加的元素与集合中已有的某个元素的属性值相同,那么新添加的元素不存入集合.
如果equals(Object obj)方法返回false,说明新添加的元素与集合中已有的元素的属性值都不同,那么新添加的元素存入集合.
hashCode()方法优化:
如果让hashCode()方法返回一个固定值,那么每个新添加的元素都要调用equals(Object obj)方法比较,那么效率较低.
只需要让不同属性的值的元素产生不同的哈希值,那么就可以不再调用equals方法比较提高效率.
Collections的方法
Collections和Collection的方法的区别:
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集合
Map和Collection综述:
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();
}
未完待续