欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA基础 之 Map

程序员文章站 2022-04-06 17:41:36
...

概述:

    1.键值对,key-value,具有映射关系的数据

    2.Map的key不允许重复,value可以重复

    3.Map里的key类似一个Set,甚至可以通过map.keySet()拿到key的Set集合

    4.Map里的value类似一个List,只不过索引不再是数字,而是任意类型

    5.相关类:HashMap、Hashtable(t就是小写 不是写错了~)、LinkedHashMap、Properties、TreeMap

    6.HashMap和Hashtable

       1.HashMap(线程不安全)、Hashtable(线程安全),所以不考虑同步问题的时候HashMap性能好些

       2.Hashtable不允许null,HashMap key-value 均允许null的存在

    7.LinkedHashMap遍历顺序与插入顺序一致,而HashMap不能保证顺序(不是按照添加先后遍历的)

    8.Properties用来读取属性文件的类,它继承自Hashtable

    9.TreeMap的操作类似TreeSet 请参见《JAVA基础 之 Set》一文,活参看java api,这里不再赘述

package com.cxy.collection;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;

/**
 * @author cxy
 */
public class MapTest
{
	public static void main(String[] args) throws Exception
	{
		Map<String,String> m=new HashMap();
		m.put("姓名", "cxy");
		m.put("性别", "男");
		m.put("邮箱", "163@163.com");  //当key不存在于Map的时候put方法可以看作是新增
		m.put("邮箱", "cxyapi@163.com");  //当key存在于Map的时候put方法可以看作是更新
		m.put(null, null); //HashMap key-value 均允许null的存在
		System.out.println(m);
		System.out.println("============================");
		
		System.out.println("m的key中是否包含'姓名'? 答:"+m.containsKey("姓名"));
		System.out.println("m的value中是否包含'女'? 答:"+m.containsValue("女"));
		System.out.println("邮箱是:"+m.get("邮箱")); //使用get方法通过key找到value
		System.out.println("m是否为空?答:"+m.isEmpty());
		System.out.println("m大小?答:"+m.size());
		System.out.println("============================");
		
		//通过keySet方法取到Map对象的key的Set集合
		Set<String> ms=m.keySet();
		System.out.print("m的键(key)有:");
		for(String one :ms)
		{
			System.out.print(one+"  ");
		}
		System.out.println("");  //保持格式无实际用处
		System.out.println("============================");
		
		m.put("描述", "性别男,爱好女");
		System.out.println(m);
		m.remove("描述");  //通过key删除对应的键值对
		m.remove(null);
		System.out.println(m);
		System.out.println("============================");
		
		Collection<String> vs= m.values();
		System.out.print("m的值(value)有:");
		for(String one :vs)
		{
			System.out.print(one+"  ");
		}
		System.out.println("");  //保持格式无实际用处
		System.out.println("============================");
		
		m.clear(); //清空数据
		System.out.println(m);
		System.out.println("============================");
		
		Properties p=new Properties();
		p.setProperty("username", "cxy");
		p.setProperty("password", "123");
		p.store(new FileOutputStream("d://cxytest.ini"), "机密");  //将属性写入ini文件,注释是机密
		//创建另一个Properties对象去加载刚才生成的ini文件
		Properties p1=new Properties();
		p1.load(new FileInputStream("d://cxytest.ini"));
		System.out.println(p1);
		System.out.println("============================");
		
		TreeMap tm = new TreeMap();
		tm.put("b", "234");
		tm.put("a", "123");
		tm.put("c", "456");
		System.out.println(tm);
		System.out.println("============================");
	}
}

 

相关文章连接:

《JAVA基础 之 Collection》

《JAVA基础 之 List》

《JAVA基础 之 Set》

 

声明:

1.原创文章,转载请标明并加本文连接。

2.更详尽的API请参见  http://docs.oracle.com/javase/7/docs/api/

3.文章反映个人愚见,如有异议欢迎讨论指正