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

    xiaoxiao2021-03-25  171

    集合框架(一)

    一、集合框架介绍

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

    二、集合概述

    集合接口被分为两大部分,最基本的Collection以及Map;如下图: 我们在实现集合接口时,需要遵循以下标准: 不支持(add,remove,clear)操作的集合称之为unmodifiable;相反为modifiable; 确保集合中的对象不会有更改的集合为immutable,反之为mutable;

    三、Collection接口

    集合框架的根接口,我们有必要对其好好分析: 实现Collection接口时要注意:缺省方法的实现是不支持同步(synchronization)的;如果需要实现同步,我们需要重写缺省实现; 接口方法总结: 集合作为数据对象的容器,需要提供一些基础的数据操作方法,比较容易想到的就是增加元素、删除元素和查找元素;    类型 方法 说明增加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求集合的HashCodeiterator():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接口类中定义了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,将键值对插入MapcomputeIfPresent(K,BiFunction<? super K,? super V,? extends V>):V如果指定的Key有关联值,且非空,则应用指定方法计算新Value,关联到该Keycompute(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是否包含KeycontainsValue(Object):booleanMap中是否包含值Map基础size():intmap大小isEmpty():booleanmap是否空hashCode():intmap的Hash值 参考文献: 【1】 http://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 【2】 http://blog.csdn.net/zhangerqing/article/details/8122075
    转载请注明原文地址: https://ju.6miu.com/read-21091.html

    最新回复(0)