你不知道的Java学习笔记18--Map
来源:互联网 发布:激光亚克力切割机软件 编辑:程序博客网 时间:2024/06/05 07:11
一、Map接口
1、Map内存储的是键/值对这样以成对的对象组(可以把一组对象当成一个元素),通过“键”对象来查询“值”对象。
2、key-value,一一映射,一个键只能定义一个值。
3、Map中,key值是唯一的(不能重复),而key对象是与value对象关联在一起的。
4、Map接口的两个实现:
(1)HashMap
基于哈希表的Map接口的实现。
key/value对是按照Hash算法存储的。
(2)TreeMap
基于树的实现。
key/value对是排序(按key的值进行排序简单的自然排序,只能是字母、数组的简单排序,但是对于中文就不能,必须采取其他的方法进行排序,其实也是按照其拼音进行的排序)存储的。
二、HashMap
1、基于哈希表的Map接口的实现。
2、key/value对是按照Hash算法存储的。
HashMap的常用方法
(一)赋值 :Object put( Object key,Object value)
import java.util.HashMap;public class TestMap { public static void main(String[] args) { HashMap hmap=new HashMap(); //put():赋值 hmap.put(1, "星期一"); hmap.put(2, "星期二"); hmap.put(3, new java.util.Date()); //用new是为了节省数据从引用类型转换为基本数据类型的操作,但是结果还是一样的,没有任何区别 hmap.put(4, new Integer(30)); hmap.put(5, 30); System.out.println(hmap); }}
(二)删除:Object remove(key )
import java.util.HashMap;public class TestMap { public static void main(String[] args) { HashMap hmap=new HashMap(); //put():赋值 hmap.put(1, "星期一"); hmap.put(2, "星期二"); hmap.put(3, new java.util.Date()); //用new是为了节省数据从引用类型转换为基本数据类型的操作,但是结果还是一样的,没有任何区别 hmap.put(4, new Integer(30)); hmap.put(5, 30); System.out.println(hmap); //remove():删除 //删除 key=1的值 hmap.remove(1); //删除 key=3的值 hmap.remove(3); System.out.println(hmap); }}
(三)查询
1、Object get(Object key )
返回此映射中映射到指定键的值,即操作key得到value。
i
mport java.util.HashMap;public class TestMap { public static void main(String[] args) { HashMap hmap=new HashMap(); //put():赋值 hmap.put(1, "星期一"); hmap.put(2, "星期二"); hmap.put(3, new java.util.Date()); //用new是为了节省数据从引用类型转换为基本数据类型的操作,但是结果还是一样的,没有任何区别 hmap.put(4, new Integer(30)); hmap.put(5, 30); System.out.println(hmap); //获取key为1的value值 System.out.println(hmap.get(1)); //获取key为3的value值 System.out.println(hmap.get(3)); }}
2、boolean containsKey(Object key)
若此映射包含指定键的映射关系,返回true,否则返回false。
import java.util.HashMap;public class TestMap { public static void main(String[] args) { HashMap hmap=new HashMap(); //put():赋值 hmap.put(1, "星期一"); hmap.put(2, "星期二"); hmap.put(3, new java.util.Date()); //用new是为了节省数据从引用类型转换为基本数据类型的操作,但是结果还是一样的,没有任何区别 hmap.put(4, new Integer(30)); hmap.put(5, 30); System.out.println(hmap); //判断此映射是否包含key为2的映射关系,有地话返回true,没有的话返回false System.out.println(hmap.containsKey(2)); System.out.println(hmap.containsKey(10)); }}
3、boolean containtsValue(Object value)
若此映射为指定值映射一个或多个键,返回true。
import java.util.HashMap;public class TestMap { public static void main(String[] args) { HashMap hmap=new HashMap(); //put():赋值 hmap.put(1, "星期一"); hmap.put(2, "星期二"); hmap.put(3, new java.util.Date()); //用new是为了节省数据从引用类型转换为基本数据类型的操作,但是结果还是一样的,没有任何区别 hmap.put(4, new Integer(30)); hmap.put(5, 30); System.out.println(hmap); //判断此映射是否包含values为"星期一"的映射关系,有地话返回true,没有的话返回false System.out.println(hmap.containsValue("星期一")); //判断此映射是否包含values为"40"的映射关系,有地话返回true,没有的话返回false System.out.println(hmap.containsValue(40)); }}
4、Set keySet( )
返回此映射中包含的键的set视图,即获取所有的key放在set视图中。
/* * 获取所有的key的值放在set视图中,并打印出所有的key和value */import java.util.HashMap;import java.util.Iterator;import java.util.Set;public class TestMap { public static void main(String[] args) { HashMap hmap=new HashMap(); //put():赋值 hmap.put("1", "星期一"); hmap.put("2", "星期二"); hmap.put("3", new java.util.Date()); //用new是为了节省数据从引用类型转换为基本数据类型的操作,但是结果还是一样的,没有任何区别 hmap.put("4", new Integer(30)); hmap.put("5", 30); System.out.println(hmap); /* * 获取所有的key的值放在set视图中,并打印出所有的key和value */ //创建对象 Set keyset=hmap.keySet(); //创建迭代器 Iterator iter=keyset.iterator(); /* * 循环打印 */ //如果存在有下一个值,则执行循环体的语句 while(iter.hasNext()) { //强制转换为String类型,key的值必须要定义为String类型才能进行该强制转换 String key=(String) iter.next(); //输出key和value System.out.println("key"+key+" value:"+hmap.get(key)); } }}
三、TreeMap
1、TreeMap基于树的实现。
2、key/value对是排序(按key的值进行排序简单的自然排序,只能是字母、数组的简单排序,但是对于中文就不能,必须采取其他的方法进行排序,其实也是按照其拼音进行的排序)存储的。
3、如果要使用到一些简单的自然排序时会采用TreeMap,其他的方法和使用与HashMap一样。
4、TreeMap实现自然排序实例
/* * 测试TreeMap的自然排序 */import java.util.TreeMap;public class TestTreeMap { public static void main(String[] args) { //创建对象 TreeMap map=new TreeMap(); //通过map对象调用put()方法进行赋值 map.put(1, "星期一"); map.put(2, "星期二"); map.put(5, new java.util.Date()); map.put(4, new Integer(30)); map.put(3, "中国人"); //打印 System.out.println(map); }}
四、HashMap与TreeMap的比较
1、HashMap基于哈希表实现的,而TreeMap基于树实现的。
2、HashMap可以通过调优初始容器和负载因子,优化HashMap使用。而TreeMap没有调优选项,因为概树总处于平衡状态。
3、HashMap性能优于TreeMap。
五、HashMap与Hashtable的比较
1、Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现。
2、Hashtable是线程安全的,也就是说是同步的,而HashMap是线程不安全的。不是同步的。
3、HashMap允许将null作为一个entry的key或者value。而Hashtabel不允许。
- 你不知道的Java学习笔记18--Map
- 你不知道的Java学习笔记13--Date类
- 你不知道的Java学习笔记14--String类
- 你不知道的Java学习笔记15--StringBuffer类
- 你不知道的Java学习笔记20-- 多线程编程
- 你不知道的Java学习笔记21-- 集合(Collection)
- 你不知道的Java学习笔记23-- 线程优先级
- 你不知道的Java学习笔记24-- 线程同步
- 你不知道的Java学习笔记17--Java文件的拷贝和剪切
- 你不知道的Java学习笔记1--JAVA 基础应用编程
- 你不知道的Java学习笔记11--“equals()”与“==”的区别
- 你不知道的Java学习笔记12--String、StringBuffer、StringBuilder比较
- 你不知道的Java学习笔记16--Calendarn 日期类
- 你不知道的Java学习笔记19-- 对象序列化
- 你不知道的Java学习笔记22-- 线程阻塞(线程休眠)方法
- 你不知道的Kettle学习笔记1--Kettle详解
- 你不知道的Kettle学习笔记3--Kettle资源库
- 你不知道的Kettle学习笔记5--日志
- php取得文件后缀名
- Kali安装VirtualBox增强功能失败解决办法
- 有重复全排列
- springmvc使用json
- 字符编码:ASCII、Unicode、UTF-8
- 你不知道的Java学习笔记18--Map
- GrideView 的使用方法
- Python基础(八)——关键字
- 【meachine learning】线性判别分析(LDA)
- Md5加密算法 java 代码
- 解决GridView,ListView嵌套在ScrollView时只显示一行高度的问题
- win7 64位下搭建 sublime text C/C++编译环境
- 清北学堂十一培训酱油记
- TCP协议如何保证可靠传输