JAVA源码阅读-集合框架(一)

集合框架(一)

一、集合框架介绍

集合是一个对象,它代表一组对象(JAVA 面向对象思想);
集合框架的优点:
提供基本的数据结构与算法,减少了编程量;
提供高性能的实现;

二、集合概述

集合接口被分为两大部分,最基本的Collection以及Map;如下图:
集合体系





我们在实现集合接口时,需要遵循以下标准:
  • 不支持(add,remove,clear)操作的集合称之为unmodifiable;相反为modifiable;
  • 确保集合中的对象不会有更改的集合为immutable,反之为mutable;

三、Collection接口

集合框架的根接口,我们有必要对其好好分析:
实现Collection接口时要注意:缺省方法的实现是不支持同步(synchronization)的;如果需要实现同步,我们需要重写缺省实现;
接口方法总结:

        Collection Methods
集合作为数据对象的容器,需要提供一些基础的数据操作方法,比较容易想到的就是增加元素、删除元素和查找元素;
  
类型 方法 说明
增加add(E):boolean增加一个元素
addAll(Collection<?>):boolean增加一组元素
删除remove(Object):boolean移除一个元素
removeAll(Collection<?>):boolean移除一组元素
removeIf(Predicate<? super E>):boolean移除指定条件的元素
clear():void清除所有元素
包含元素contains(Object):boolean判断是否包含某元素
containsAll(Collection<?>):boolean判断是否包含一组元素
比较equals(Object):boolean比较两个对象是否相等
集合
基本性质
size():int集合大小
isEmpty():boolean集合是否为空
hashCode():int求集合的HashCode
iterator():Iterator<E>集合迭代器
转换toArray():Object[]将集合转换为数组
toArray(T[])<T>:T[]返回一个指定数组,包含集合中的所有元素
求交集retainAll(Collection<?> c)求集合交集
其它spliterator():Spliterator<E>可分割迭代器,用于并行遍历数据源(后续详细讨论)
stream() :Stream<E>返回流
parallelStream():Stream<E>返回并行执行流

四、Map接口

Map常常用来保存键值对;用于基于键来查找对应的值;所以一个Map是不可以包含重复的key,一个key也最多关联到一个value;
接口方法总结:
Map Methods
Map接口类中定义了Entry内部接口,常常在遍历Map时用到;这里不做详细分析,后续会对其进行研究;
         
类型 方法 说明
添加元素put(K,V):V在Map中关联指定值到指定键
putAll(Map<? extends K, ? extends V>):void复制指定Map中的所有的键值对到Map中
添加(特殊)putIfAbsent(K,V):V如果指定的Key没有关联值,则插入键值对,否则返回值
computeIfAbsent(K,Function<? super K.? extends V>):V如果指定的Key没有关联值,则尝试用指定的方法计算出Value,将键值对插入Map
computeIfPresent(K,BiFunction<? super K,? super V,? extends V>):V如果指定的Key有关联值,且非空,则应用指定方法计算新Value,关联到该Key
compute(K,BiFunction<? super K,? super V,? extends V>):V根据指定Key和Value计算新的值,如果新值非空则将可以关联到新值,否则移除旧键值对
merge(K,V,BiFunction<? super V,? extends V>):V合并插入
替换replace(K,V):V将key关联到新值
replace(K,V,V):boolean如果Key关联到指定的值,则替换
replaceAll(BiFunction<? super K,? super V, ? extends V>):void应用指定的方法,替换所有键值对
删除remove(Object key):V移除指定Key的键值对
remove(Object, Object):boolean移除指定键值对
clear():void清除Map
获取get(Object key):V返回指定key对应的值
KeySet():Set<K>获取所有Key的集合
values():Collection<V>获取所有值的集合
entrySet():Set<Enry<K,V>>获取所有键值对集合
getOrDefault(Object,V):V返回指定Key关联的值,否则返回缺省值
是否包含containsKey(Object):booleanMap是否包含Key
containsValue(Object):booleanMap中是否包含值
Map基础size():intmap大小
isEmpty():booleanmap是否空
hashCode():intmap的Hash值

参考文献:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值