LinkedHashMap
由键决定:有序不重复,无索引。
有序:保证存储和取出的元素顺序一致
原理:底层数据结构依然是哈希表,只是每个键值对元素又额外的多了一个双链表机制记录存储的顺序。
public static void main(String[] args) {
LinkedHashMap<String,Integer> lhm = new LinkedHashMap<>();
lhm.put("a",123);
lhm.put("a",123);
lhm.put("b",456);
lhm.put("c",789);
System.out.println(lhm);
}
输出:{a=123, b=456, c=789}
升序:
public static void main(String[] args) {
//Integer Double 默认情况下都是升序排列的
//String 按照ASCII码表中对应的数字升序排列
TreeMap<Integer,String> tm = new TreeMap<>();
tm.put(4,"ddd");
tm.put(1,"aaa");
tm.put(2,"bbb");
tm.put(3,"ccc");
System.out.println(tm);
}
降序:
public static void main(String[] args) {
//Integer Double 默认情况下都是升序排列的
//String 按照ASCII码表中对应的数字升序排列
TreeMap<Integer,String> tm = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
tm.put(4,"ddd");
tm.put(1,"aaa");
tm.put(2,"bbb");
tm.put(3,"ccc");
System.out.println(tm);
}