java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5055| 回复: 0

java中Map小结

java中Map小结

Map集合

按 <键,值> 对的形式存储元素

put( k, v), containsKey( k ), containsValue( v ) , get( k ), remove( k )

keyset() , values(), entrySet()

HashMap

底层是哈希表(散列表), 哈希表就是一个数组, 数组的每个元素是一个单向链表

理解工作原理

HashTable

底层是哈希表, 它是线程安全的, HashMap不是线程安全的

初始化容量:11, HashMap初始化容量: 16

加载因子: 0.75, 当 <键,值> 对的数量大于 哈希桶容量 * 加载因子时, 哈希桶扩容

HashTable默认扩容: 2倍 + 1 , HashMap扩容: 2倍

HashTable的键与值都不能为null, HashMap的键与值可以为null

创建HashTable时, 可以指定初始化容量; HashMap会自动把初始化容量调整为2的幂次方,就是为了快速计算数组的下标

Properties

继承了HashTable, 键与值都是String类型

经常用于设置/读取系统属性值

一般情况下, 系统属性会保存在配置文件中, 可以通过Properties读取配置文件的内容, 也可以使用ResouceBundle读取配置文件的属性

TreeMap

实现了SortedMap接口, 可以根据键自然排序, 要求键必须是可比较的,

要么指定Comparator比较器, 如果没有Comparator比较器,键需要实现Comparable接口

Comparator比较与Comparable如何选择?

对于TreeMap来说, 先根据Comaparator比较器进行比较大小 , 如果没有Comparator比较器, 再选择Comparable接口

对于开发人员来说, 一般通过实现Comparable接口定义一个默认的比较规则 , 通过Comparator比较器定义若干不能同的排序规则

如何选择Map?

如果不需要根据键排序就选择HashMap, 如果需要根据键排序就选择TreeMap

如果在多线程程序中, 使用java.util.concurrent包中的类,如果不需要根据键排序选择ConcurrentHashMap, 如果需要根据键排序选择ConcurrentSkipListMap

练习:

编写用户的注册与登录程序, 使用Map保存用户名与密码


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1184_1_1.html


java面试题交流群:327440556

上一篇:java io流详解 下一篇:java TreeMap的排序
您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018