Java基础案例教程 第六章集合类 ———6.5 Map接口

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

一、Map接口简介

  • Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对于关系,称为映射。
  • 从Map集合中访问元素时,只要指定了Key,就能找到对应的Value

二、HashMap集合

HashMap集合是map接口的一个实现类,它用于存储键值映射关系,但必须保证不出现重复的键

1、基本存取

     HashMap中如果键重复,会发生覆盖

package cn.itcast.chapter06.example10;

import java.util.HashMap;
import java.util.Map;

/**
 * HashMap的用法
 */
public class Example10 {
    public static void main(String[] args) {
        Map map = new HashMap(); // 创建Map对象
        map.put("1", "Jack");     // 存储键和值
        map.put("2", "Rose");
        map.put("3", "Lucy");
        map.put("3", "Mary");

        System.out.println("1:" + map.get("1"));  // 根据键获取值
        System.out.println("2:" + map.get("2"));
        System.out.println("3:" + map.get("3"));
    }
}


输出
1:Jack
2:Rose
3:Mary

2、获取键的集合

package cn.itcast.chapter06.example11;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * HashMap的用法
 * 遍历集合中的元素,通过键值遍历
 */
public class Example11 {
    public static void main(String[] args) {
        Map map = new HashMap();            // 创建Map集合
        map.put("1", "Jack");               // 存储键和值
        map.put("2", "Rose");
        map.put("3", "Lucy");

        //1. 获取键的集合
        Set keySet = map.keySet();
        //2.迭代键的集合
        Iterator it = keySet.iterator();
        while (it.hasNext()) {
            Object key = it.next();
            // 3.获取每个键所对应的值
            Object value = map.get(key);  
            System.out.println(key + ":" + value);
        }
    }
}


输出
1:Jack
2:Rose
3:Lucy

3、获取键值对集合

package cn.itcast.chapter06.example12;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * HashMap的用法
 * 遍历集合中的元素,通过所有映射遍历
 */
public class Example12 {
    public static void main(String[] args) {
        // 创建Map集合
        Map map = new HashMap();
        // 存储键和值
        map.put("1", "Jack");
        map.put("2", "Rose");
        map.put("3", "Lucy");

        //1.获取所有的键值对元素
        Set entrySet = map.entrySet();
        Iterator it = entrySet.iterator();
        while (it.hasNext()) {
            // 2.通过迭代器获取集合中键值对映射关系
            Map.Entry entry = (Map.Entry) (it.next());
            // 3.获取Entry中的键
            Object key = entry.getKey();
            // 获取Entry中的值
            Object value = entry.getValue();
            System.out.println(key + ":" + value);
        }
    }
}

4、获取值的集合

注:HashMap和HashSet一样,存进去的顺序不定

package cn.itcast.chapter06.example13;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Map的用法
 * values()方法的使用
 */
public class Example13 {
    public static void main(String[] args) {
        Map map = new HashMap(); // 创建Map集合
        map.put("1", "Jack");     // 存储键和值
        map.put("2", "Rose");
        map.put("3", "Lucy");

        //获取map中所有的值
        Collection values = map.values();
        Iterator it = values.iterator();
        while (it.hasNext()) {
            Object value = it.next();
            System.out.println(value);
        }
    }
}


输出
Jack
Rose
Lucy

5、LinkedHashMap集合:保证元素存取顺序一致

package cn.itcast.chapter06.example14;
import java.util.*;
/**
 * Map的用法
 * LinkedHashMap的用法
 */
public class Example14 {
	public static void main(String[] args) {
		// 创建Map集合
		Map map = new LinkedHashMap();
		map.put("1", "Jack");              // 存储键和值
		map.put("2", "Rose");
		map.put("3", "Lucy");
		Set keySet = map.keySet();
		Iterator it = keySet.iterator();
		while (it.hasNext()) {
			Object key = it.next();
			Object value = map.get(key); // 获取每个键所对应的值
			System.out.println(key + ":" + value);
		}
	}
}


输出
1:Jack
2:Rose
3:Lucy

三、Properties集合

  • Map接口中还有一个实现类HashTable,它和HashMap很相似。
  • 区别在于HashMap是线程安全的,HashTable存取元素时速度很慢,目前基本上被HashMap类所取代,但是HashTable类有一个子类Properties在实际应用中十分重要。 
  • Properties主要用来存储字符串类型的键和值,在实际开发中,经常使用Properties集合来存取应用的配置项,
  • 假设有一个文本编辑工具,要求默认背景色是红色,字体大小为14px,语言为中文,其配置项应该如下

 Background-color = red

 Font-size = 14px

 Language = chinese

1、添加元素

 p.setProperty("Backgroup-color", "red");

2、获取所有的键

 Enumeration names = p.propertyNames();
package cn.itcast.chapter06.example15;

import java.util.Enumeration;
import java.util.Properties;

/**
 * Prorperties集合的使用
 */
public class Example15 {
    public static void main(String[] args) {
        // 创建Properties对象
        Properties p = new Properties();
        p.setProperty("Backgroup-color", "red");
        p.setProperty("Font-size", "14px");
        p.setProperty("Language", "chinese");

        // 获取Enumeration对象所有键的枚举  Enumeration -- 相当于Iterator迭代器
        Enumeration names = p.propertyNames();
        while (names.hasMoreElements()) {
            // 循环遍历所有的键
            String key = (String) names.nextElement();
            // 获取对应键的值
            String value = p.getProperty(key);       
            System.out.println(key + " = " + value);
        }
    }
}


输出
Language = chinese
Backgroup-color = red
Font-size = 14px

猜你喜欢

转载自blog.csdn.net/wangpailiulanqi8/article/details/93883611