您当前的位置: 华联金融网 > 货币

treemap排序规则?

作者:admin时间:2024-12-15 04:34:27 阅读数: +人阅读

TreeMap 默认排序规则:按照key的字典顺序来排序(升序)。(注:这里的有序是遍历时值大小的有序,不是插入顺序的有序)(默认排序规则对应底层数据结构红黑树的中序遍历)

当然,也可以自定义排序规则:要实现Comparator接口。

用法简单,先看下下面的demo

public class SortDemo {

public static void main(String[] args) {

System.out.println("---------------- 默认 排序结果-----------------");

createDefaultSortTreeMap();

System.out.println("---------------- 自定义 排序结果-----------------");

createDefinitionSortTreeMap();

}

public static void createDefaultSortTreeMap() {

TreeMap<String, String> map = new TreeMap<String, String>();

init(map);

print(map);

}

public static void createDefinitionSortTreeMap() {

TreeMap<String, String> map = new TreeMap<String, String>(new Comparator<String>() {

@Override

public int compare(String o1, String o2) {

return o2.compareTo(o1);

}

});

init(map);

print(map);

}

public static void init(Map<String, String> map) {

map.put("c", "1");

map.put("a", "1");

map.put("bb", "1");

map.put("b", "1");

}

public static void print(Map<String, String> map) {

Iterator<Entry<String, String>> it = map.entrySet().iterator();

while(it.hasNext()) {

Entry<String, String> entry = it.next();

System.out.println(entry.getKey() + " : " + entry.getValue());

}

}

结果:

---------------- 默认 排序结果-----------------

a : 1

b : 1

bb : 1

c : 1

---------------- 自定义 排序结果-----------------

c : 1

bb : 1

b : 1

a : 1

二、扩展:字典顺序的排序规则。

1、两个数字了m1,m2比较: 对于数字来说,直接按照大小排序1

2 、两个字符串 s1, s2比较

(1)、如果s1和s2是父子串关系,则 子串 < 父串

(2)、如果非为父子串关系, 则从第一个非相同字符来比较。

    例子 s1 = "ab", s2 = "ac" 这种情况算法规则是从第二个字符开始比较,由于'b' < 'c' 所以 "ab" < "ac"

(3)、字符间的比较,是按照字符的字节码(ascii)来比较TreeMap 默认排序规则:按照key的字典顺序来排序(升序)。(注:这里的有序是遍历时值大小的有序,不是插入顺序的有序)(默认排序规则对应底层数据结构红黑树的中序遍历)

当然,也可以自定义排序规则

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。