Java LinkedHashMap

1 什么是Java LinkedHashMap

Java LinkedHashMap类实现了Map接口,继承了HashMap类,LinkedHashMap存储的元素是有序的。

Java LinkedHashMap类要记住的核心要点:

  • Java LinkedHashMap包含key-value对。
  • Java LinkedHashMap不能存储重复元素。
  • Java LinkedHashMap可以包含一个或多个null值。
  • Java LinkedHashMap是非同步(线程不安全的)。
  • Java LinkedHashMap是元素有序的。
  • Java HashMap类的初始默认容量为16,负载因子为0.75。

2 Java LinkedHashMap的语法

public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>  

3 Java LinkedHashMap的构造方法

构造方法 描述
LinkedHashMap() 用于构造默认的LinkedHashMap。
LinkedHashMap(int capacity) 用于初始化具有给定容量的LinkedHashMap。
LinkedHashMap(int capacity, float loadFactor) 用于初始化容量和负载系数。
LinkedHashMap(int capacity, float loadFactor, boolean accessOrder) 用于以指定的accessOrder初始化容量和负载系数。
LinkedHashMap(Map<? extends K,? extends V> m) 用于使用给定Map类中的元素初始化LinkedHashMap。

4 Java LinkedHashMap的方法

方法 描述
V get(Object key) 返回根据key获取value对象。
void clear() 删除LinkedHashMap中的所有元素。
boolean containsValue(Object value) 如果Map将一个或多个key映射到指定value值,则返回true。
Set<Map.Entry<K,V>> entrySet() 返回Map中所有Entry的Set集合。
void forEach(BiConsumer<? super K,? super V> action) 对Map中的每个条目执行给定的操作,直到所有条目都已处理或该操作引发异常为止。
V getOrDefault(Object key, V defaultValue) 根据key获取value对象。;如果Map不包含此key,则返回默认值defaultValue。
Set<K> keySet() 返回Map包含的key的Set集合。
protected boolean removeEldestEntry(Map.Entry<K,V> eldest) 删除最旧的条目时返回true。
void replaceAll(BiFunction<? super K,? super V,? extends V> function) 用在该条目上调用给定函数的结果替换每个条目的值,直到处理完所有条目或该函数引发异常为止。
Collection<V> values() 返回Map中包含的所有value的Collection集合。

5 Java LinkedHashMap的例子

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java LinkedHashMap的例子
 */
import java.util.*;

class Demo{

    public static void main(String args[]){

        LinkedHashMap<Integer,String> hm=new LinkedHashMap<Integer,String>();

        hm.put(100,"Eric");
        hm.put(101,"Jack");
        hm.put(102,"Rose");

        for(Map.Entry m:hm.entrySet()){
            System.out.println(m.getKey()+" "+m.getValue());
        }
    }
}

输出结果为:

100 Eric
101 Jack
102 Rose

6 Java LinkedHashMap的例子:keySet()

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java LinkedHashMap的例子
 */
import java.util.*;

class Demo{

    public static void main(String args[]){
        LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer, String>();
        map.put(100,"Eric");
        map.put(101,"Jack");
        map.put(102,"Lucy");
        //获取key
        System.out.println("Keys: "+map.keySet());
        //获取value
        System.out.println("Values: "+map.values());
        //获取Entry
        System.out.println("Key-Value pairs: "+map.entrySet());
    }
}

输出结果为:

Keys: [100, 101, 102]
Values: [Eric, Jack, Lucy]
Key-Value pairs: [100=Eric, 101=Jack, 102=Lucy]

7 Java LinkedHashMap的例子:remove()

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java LinkedHashMap的例子
 */
import java.util.*;

public class Demo {

    public static void main(String args[]) {
        Map<Integer,String> map=new LinkedHashMap<Integer,String>();
        map.put(101,"Jack");
        map.put(102,"Rose");
        map.put(103,"Paul");
        System.out.println("执行remove()方法前: "+map);
        map.remove(102);
        System.out.println("执行remove()方法后: "+map);
    }
}

输出结果为:

执行remove()方法前: {101=Jack, 102=Rose, 103=Paul}
执行remove()方法后: {101=Jack, 103=Paul}

 

推荐好课