<pre>
import java.util.*;public class LinkedHashMapDemo {
  
  public static void main(String[] args) {
    String[][] str={
     {"Kobe","Bryant"},
     {"Tracy","McGrady"},
     {"Allen","Iverson"},
     {"Dwyne","Wade"},
     {"Kevin","Garnett"},
    };
    Map<String,String> linkedMap = new LinkedHashMap<String,String>();
    for(int i = 0 ; i < str.length ; i++){
        linkedMap.put(str[i][0],str[i][1]);
    }
    System.out.println(linkedMap);
    // Least-recently used order:
    linkedMap = new LinkedHashMap<String,String>(16, 0.75f,true);
    //为什么这里这样定义LinkedHashMap就会自动用LRU算法?
    for(int i = 0 ; i < str.length ; i++){
        linkedMap.put(str[i][0],str[i][1]);
    }
    System.out.println(linkedMap);
    for(int i = 0; i < 3; i++) // Cause accesses:
        linkedMap.get(str[i][0]);
    System.out.println(linkedMap);
    linkedMap.get("Tracy");
    System.out.println(linkedMap);
  }
}
</pre>
这是输出结果:
{Kobe=Bryant, Tracy=McGrady, Allen=Iverson, Dwyne=Wade, Kevin=Garnett}
{Kobe=Bryant, Tracy=McGrady, Allen=Iverson, Dwyne=Wade, Kevin=Garnett}
{Dwyne=Wade, Kevin=Garnett, Kobe=Bryant, Tracy=McGrady, Allen=Iverson}
{Dwyne=Wade, Kevin=Garnett, Kobe=Bryant, Allen=Iverson, Tracy=McGrady}

解决方案 »

  1.   

    这个看API吧:
    LinkedHashMap
    public LinkedHashMap(int initialCapacity,float loadFactor,boolean accessOrder)
    构造一个带指定初始容量、加载因子和排序模式的空 LinkedHashMap 实例。 参数:
    initialCapacity - 初始容量。
    loadFactor - 加载因子。
    accessOrder - 排序模式 - 对于访问顺序,为 true;对于插入顺序,则为 false。 
      

  2.   

    我查过API,但就是不知道加载因子是干嘛用的
      

  3.   

    加载因子是已存和的数据容量与总容量的比率,采用小数表示,默认为 0.75,即表示当 Map 中的数据量达到总容量的 75% 时,其容量空间自动扩张至原容量的一倍。一般来说,没有什么特殊的要求,不建议去更改。