LinkedHashMap
由键决定:有序、不重复、无索引。
这里的有序指的是保证存储和取出的元素顺序一致
原理:底层数据结构是依然哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序
TreeMap
TreeMap跟TreeSet底层原理一样,都是红黑树结构的。
由键决定特性:不重复、无索引、可排序
可排序:对键进行排序
注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则
代码书写两种排序规则
实现Comparable接口,指定比较规则。
创建集合时传递Comparator比较器对象,指定比较规则。
package map;
import java.util.TreeMap;
import java.util.function.BiConsumer;
import java.util.zip.CheckedOutputStream;
public class MapDemo4 {
public static void main(String[] args) {
String s = "aababcabcdabcde";
TreeMap<Character,Integer> tm =new TreeMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(tm.containsKey(c)){
Integer count = tm.get(c);
count++;
tm.put(c,count);
}else {
tm.put(c,1);
}
}
StringBuffer sb =new StringBuffer();
tm.forEach(( key,value) -> sb.append(key).append("(").append(value).append(")"));
System.out.println(sb);
}
}