集合系列日记(17.5.20)

补充上一篇当中HashMap中的对外接口

1.clear():清空HashMap,它将所有的元素设为null(无效值)来实现

public void clear(){
    modCount++;
    Entry[] tab=table;
    for(int i=0;i<tab.length;i++)
        tab[i]=null;
    size=0;
}

2.containsKey():containsKey()的作用是判断HashMap是否包含key

3.containsValue():判断HashMap是否包含“值为value”的元素

public boolean containsValue(Object value){
    if(value==null)
        return containsNullValue();

    Entry[] tab=table;
    for(int i=0;i<tab.length;i++)
        for(Entry e=tab[i];e!=null;e=e.next)
            if(value.equals(e.value))
                return true;
    return false;
}

4.entrySet()、values()、keySet()

public Set<Map.Entry<K,V>> entrySet(){
    return entrySet0();
}
private Set<Map.Entry<K,V>> entrySet0(){
    Set<Map.Entry<K,V>> es=entrySet;
    return es !=null ?es:(entrySet=new EntrySet());
}
private final class EntrySet extends AbstractSet<Map.Entry<K,V>>{
    public Iterator<Map.Entry<K,V>> iterator(){
        return newEntryIteator();
    }
    public boolean contains(Object o){
        if(!(o instanceof MapEntry))
            return false;
        Map.Entry<K,V> e=(Map.Entry<K,V>) o;
        Entry<K,V> candidate=getEntry(e.getKey());
        return candidate !=null && candidate.equals(e);
    }
    public boolean remove(Object o){
        return removeMaping(o)!=null;
    }
    public int size(){
        return size;
    }
    public void clear(){
        HashMap.this.clear();
    }
}

待补充

时间: 2024-11-02 23:31:52

集合系列日记(17.5.20)的相关文章

集合系列日记(17.5.8)

list和set继承于collection的两个分支,list是有序的队列,里面是可以有重复的元素,而set像是数学中集合的概念,是没有重复的元素. 如图所示,抽象类abstractcollection实现了collection的大部分功能,而抽象类abstractlist和abstractset继承于abstractcollection,接口list和set分别实现了这两个类.collection接口中有一个方法lterator可以实现对元素的遍历. 1)collection是一个接口,是高度

集合系列日记(17.5.13)

Vector Vector继承于AbstractList,是一个队列,支持相关的添加.删除.修改.遍历等功能,我们可以通过元素的序号来获取元素对象,从而实现List的快速访问,并且Vector是线程安全的. Vector共有4个函数 ?Vector()  //默认的构造函数 ?Vector(int capacity)  //capacity是Vector默认的容量大小,由于每次增加时,会导致Vector的容量增加一倍 ?Vector(int capacity,int capacityIncrem

集合系列日记(17.5.10)

fail-fast fail-fast是collection的一种错误机制,当多个线程对同一个容器进行操作的时候就会产生fail-fast事件,当有两个线程a和b,当线程a对容器进行遍历时,线程b改变了容器的东西,就会进行报错. public class Test { private static List<String> list=new ArrayList<String>(); public static void main(String[]args){ ThreadOne t

集合系列日记(17.5.9)

ArrayList是一个数组队列,相当于是一个动态的数组,可以实现增删查改和遍历的功能(继承于AbstractList类),可以随机访问(实现了RandmoAccess接口),而且可以根据元素的序列号,快速去获取对象. api接口(摘自http://www.cnblogs.com/skywang12345/p/3308556.html) // Collection中定义的API boolean add(E object) boolean addAll(Collection<? extends E

集合系列日记(17.5.5)

Stack是栈(先进后出) Stack也是通过数组来实现的,它只有一个构造函数Stack() boolean empty() synchronized E peek() synchronized E pop() E push(E object) synchronized int search(Object o) Stack()常见的功能↑ 待补充....先睡觉了

Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例

概要 这一章,我们对TreeSet进行学习.我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet.内容包括:第1部分 TreeSet介绍第2部分 TreeSet数据结构第3部分 TreeSet源码解析(基于JDK1.6.0_45)第4部分 TreeSet遍历方式第5部分 TreeSet示例 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311268 第1部

Java 集合系列 17 TreeSet

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis