HashMap

entrySet() 方法

Set<Map.Entry<K,V>> entrySet() 
返回此映射所包含的映射关系的 Set 视图。 

其实我们可以这样理解,链表的产生就是因为我们的hash碰撞,一般的话,每个数据都会先被包装成Entry结构体,之后放到我们的HashSet里面,在HashSet里面其实都是table数组,一般如果没有碰撞就是每个索引最多只有一个元素Entry存在。但是当我们的hash发生碰撞的时候,我们的处理方式就是链表的的延伸,如果key值的hash发生碰撞并不一定表示我们的key是一样的,这时候我们还要比较的是equals方法。这样才可以判断这两个元素是不是一样的。总结,我们的数据是先被包装成Entry之后再放到HashSet里面的。

我们由三种方法来获取HashSet里面的数据

  1. 使用我们的迭代器Iterator,迭代器其实就是我们的Iterator接口提供的一个方法,使用这个方法我们可以单向的对Set里面的数据进行遍历。要注意的是我们在使用迭代器的时候,删除的操作只能使用迭代器提供的remove方法。否则会报错!具体代码如下:
    Iterator<Entry<String, User>> iterator=hashMap.entrySet().iterator();
    while(iterator.hasNext()){
        Entry<String,User> e=iterator.next();
        System.out.println(e.getKey()+"-->"+e.getValue().getName());
    }
    
  2. 使用我们的foreach循环进行遍历,具体代码如下:
    Set<Entry<String,User>>set=hashMap.entrySet();
    System.out.println("********************");
    for(Entry<String, User> e:set){
        System.out.println(e.getKey()+"-->"+e.getValue().getName());
    }
    
  3. 利用size()函数结合get()函数可以进行遍历。

    SortedMap接口

    这个接口和我们的SortedSet一样,可以对我们的Map元素进行排序,主要是按照我们的键的toString进行排序的。它的特有的方法是
    方法摘要

       Comparator<? super K> comparator() 
       返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。
    
      Set<Map.Entry<K,V>> entrySet() 
      返回在此映射中包含的映射关系的 Set 视图。 
    
     K firstKey() 
     返回此映射中当前第一个(最低)键。 
    
    SortedMap<K,V> headMap(K toKey) 
    返回此映射的部分视图,其键值严格小于 toKey。 
    
    Set<K> keySet() 
     返回在此映射中所包含键的 Set 视图。 
    
    K lastKey() 
    返回映射中当前最后一个(最高)键。 
    
    SortedMap<K,V> subMap(K fromKey, K toKey) 
    返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。 
    
    SortedMap<K,V> tailMap(K fromKey) 
    返回此映射的部分视图,其键大于等于 fromKey。 
    
    Collection<V> values() 
    返回在此映射中所包含值的 Collection 视图。 
    

    Sorted和Vevtor接口

    实现Sorted接口的类可以进行自动排序,它的特有方法就是获取第一个和最后一个以及在指定范围内的所有数据,而Vector接口是List接口的子接口,它的特有方法就是栈的操作,有获取栈顶元素,进栈出栈操作等,实现Vector的一个子类Stack就是进行栈操纵的一个类。