栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > Java面试题

TreeMap和HashMap的区别是什么?

Java面试题 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TreeMap和HashMap的区别是什么?

TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;
以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。

为了处理排序的问题:
    1. 对于一些简单的排序,如:数字,英文字母等
TreeMap hm = new TreeMap<String, String>(new Comparator() {
public int compare(Object o1, Object o2) {
//如果有空值,直接返回0
if (o1 == null || o2 == null)
return 0;

return String.valueOf(o1).compareTo(String.valueOf(o2));
}
});
备注:
compareTo(String str) :是String 提供的一个方法,如果参数字符串等于此字符串,
则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;
如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。

int compare(T o1,T o2):随第一个参数小于、等于或大于第二个参数而分别返回负整数、
零或正整数。

  2.对于处理有中文排序的问题
TreeMap hm = new TreeMap<String, String>(new Comparator() {
public int compare(Object o1, Object o2) {
//如果有空值,直接返回0
if (o1 == null || o2 == null)
return 0;

CollationKey ck1 = collator.getCollationKey(String.valueOf(o1));
CollationKey ck2 = collator.getCollationKey(String.valueOf(o2));
return ck1.compareTo(ck2);
}
});

备注: CollationKey:CollationKey 表示遵守特定 Collator 对象规则的 String。
比较两个CollationKey 将返回它们所表示的 String 的相对顺序。使用 CollationKey
来比较 String 通常比使用 Collator.compare 更快。因此,当必须多次比较 String 时
(例如,对一个 String 列表进行排序),使用 CollationKey 会更高效。

 

TreeMap是map接口的一个实现,TreeMap中的key是排好序的,这是TreeMap和HashMap最大的区别。

 

package test;
import java.util.HashMap;
import java.util.TreeMap;

public class TestTreeMap {


public static void main(String[] args) {
//HashMap是无序的
prt(“The following is HashMap”);
HashMap<String,Object> hashMap = new HashMap<String,Object>();
hashMap.put(“004”, new Integer(40));
hashMap.put(“003”, new Integer(30));
hashMap.put(“001”, new Integer(10));
hashMap.put(“002”, new Integer(20));

prt(hashMap);
//TreeMap是有序的
prt(“The following is TreeMap”);
TreeMap<String,Object> treeMap = new TreeMap<String,Object>();
treeMap.put(“004”, new Integer(40));
treeMap.put(“003”, new Integer(30));
treeMap.put(“001”, new Integer(10));
treeMap.put(“002”, new Integer(20));

prt(treeMap);

}

private static void prt(Object obj) {
System.out.println(obj);
}

}

 

输出:
The following is HashMap
{002=20, 004=40, 001=10, 003=30}
The following is TreeMap
{001=10, 002=20, 003=30, 004=40}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/263942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号