java映射Map

映射

    Map用于存储一个由关键字(key)和它们的值(value)组成的条目集合。Map把关键字映射到相应的值,关键字必须是独一无二的,但是不同的关键字也可以对应相同的值。因此,值不需要独一无二。

    HashMap中的关键字是无序的,TreeMap中的关键字是有序的。

    Map可以作为一个序偶(pair)的Set实例来实现,它的比较器或者equals/hashCode的实现仅仅涉及关键字。Map接口不是扩展自Collection,它是自己独立存在的。


下面是一个TreeMap的使用实例:

package chapter02;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MapTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//创建一个TreeMap
        Map<String,Integer> date = new TreeMap<String,Integer>();
        
        //添加键值对
        date.put("Monday", 1);
        date.put("Tuesday", 2);
        date.put("Wednesday", 3);
        date.put("Thursday", 4);
        date.put("Friday", 5);
        date.put("Saturday", 6);
        date.put("Sunday", 7);
        
        System.out.println("date.get(\"Monday\"):" + date.get("Monday"));
        
        System.out.println("\nThe map is: ");
        //打印输出TreeMap
        printMap("date", date);
        
        System.out.println("\nThe keys are: ");
        //得到键的集合
        Set<String> keys = date.keySet();
        //打印输出键
        printStringCollection(keys);
        
        System.out.println("\nThe values are: ");
        //得到值的集合
        Collection<Integer> values = date.values();
        //打印输出值
        printIntCollection(values);
        
        //删除特定的键值对
        date.remove("Tuesday");
        //或
        /*keys.remove("Tuesday");
        values.remove(2);*/
        
        //打印输出删除操作完成后的TreeMap
        System.out.println();
        System.out.println("After Tuesday and 2 unlisted are removed.");
        System.out.println("The map is: ");
        printMap("date", date);
        
	}
    
	/**
	 * 打印输出键
	 * @param keys
	 */
	private static void printStringCollection(Set<String> keys) {
		// TODO Auto-generated method stub
		Iterator<String> itr = keys.iterator();
		while(itr.hasNext()){
			System.out.print(itr.next() + " ");
		}
	}
    
	/**
	 * 打印输出值
	 * @param values
	 */
	private static void printIntCollection(Collection<Integer> values) {
		// TODO Auto-generated method stub
		Iterator<Integer> itr = values.iterator();
		while(itr.hasNext()){
			System.out.print(itr.next() + "     ");
		}
		System.out.println();
	}

    /**
     * 打印输出TreeMap
     * @param string
     * @param date
     */
	private static <KeyType, ValueType> void printMap(String string, Map<KeyType, ValueType> date) {
		// TODO Auto-generated method stub
		System.out.println(string + ":");
		
		Set<Map.Entry<KeyType, ValueType>> entries = date.entrySet();
		
		for(Map.Entry<KeyType, ValueType> thisPair : entries){
			System.out.print(thisPair.getKey() + ":");
			System.out.print(thisPair.getValue() + "\n");
		}
	}

}


运行结果:

/************************************************************************/

date.get("Monday"):1

The map is: 
date:
Friday:5
Monday:1
Saturday:6
Sunday:7
Thursday:4
Tuesday:2
Wednesday:3

The keys are: 
Friday Monday Saturday Sunday Thursday Tuesday Wednesday 
The values are: 
5     1     6     7     4     2     3     

After Tuesday and 2 unlisted are removed.
The map is: 
date:
Friday:5
Monday:1
Saturday:6
Sunday:7
Thursday:4
Wednesday:3

/************************************************************************/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值