question_014-JAVA之Map

来源:互联网 发布:井上真央松本润 知乎 编辑:程序博客网 时间:2024/06/05 00:45

JAVA之Map


-------------------------------------------------------------

Map特点:

将键映射到值的对象【一种映射关系】【key是Set,value是List】

一个映射不能包含重复的键【键不重复

每个键最多只能映射到一个值


----------------------基本功能--------------------

Collection和Map的区别

 * Map集合的数据结构值针对键有效,跟值无关

 * HashMap,TreeMap等。

 * Collection集合的数据结构是针对元素有效
 *

·········Map是双列的【Set ----List】
·········Collection是单列的【List,Set】

·········Map的键唯一
·········Collection的子体系Set是唯一的



 * Map集合的功能概述:

 * 1:添加功能

 * V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲

 * 如果键是第一次存储,就直接存储元素,返回nul

 * 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

 * 2:删除功能
 * void clear():移除所有的键值对元素

 * V remove(Object key):根据键删除键值对元素,并把值返回

 * 3:判断功能

 * boolean containsKey(Object key):判断集合是否包含指定的键

 * boolean containsValue(Object value):判断集合是否包含指定的值

 * boolean isEmpty():判断集合是否为空

 * 4:获取功能【重点】

 * Set<Map.Entry<K,V>>entrySet():  键值对对象的集合

 * V get(Object key):根据键获取值

 * Set<K> keySet():获取集合中所有键的集合

 * Collection<V> values():获取集合中所有值的集合

 * 5:长度功能

 * int size():返回集合中的键值对的对数

·····················································

package com.lyMap;
import java.util.HashMap;
import java.util.Map;
public class MapTest {
public static void main(String[] args) {
// 创建对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
System.out.println("put:  " + map.put("文", "马"));
System.out.println("put:  " + map.put("文", "姚"));
map.put("王工", "工薪");
map.put("理工", "数学");
map.put("文科", "语文");
System.out.println("map: " + map);

// 移除元素
// map.clear();
System.out.println("remove: " + map.remove("文科"));
System.out.println("remove: " + map.remove("语文"));
// 判断
System.out.println("contains: " + map.containsValue("理工"));
System.out.println("contains: " + map.containsKey("理工"));
System.out.println("isEmpty: " + map.isEmpty());
// 长度
System.out.println("size: " + map.size());
// 输出map
System.out.println("map: " + map);
}
}


···················································

put:  null
put:  马
map: {文=姚, 文科=语文, 理工=数学, 王工=工薪}
remove: 语文
remove: null
contains: false
contains: true
isEmpty: false
size: 3
map: {文=姚, 理工=数学, 王工=工薪}


···················································

获取功能1【重点】


1)获取所有的键的集合

2)遍历每一个键,得到键,然后取键对应的值


package com.lyMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest2 {
public static void main(String[] args) {
// 创建对象
Map<String, String> map = new HashMap<String, String>();


// 加入对象
map.put("语文", "80");
map.put("数学", "90");
map.put("外语", "99");
map.put("政治", "86");
map.put("历史", "79");
map.put("生物", "98");

// 获取所有的键
Set<String> set = map.keySet();


System.out.println("---------方式1------------");
// 遍历每一个键,得到对应的值
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s =  it.next();
String value =  map.get(s);
System.out.println(s +"------"+ value);
}
System.out.println("---------方式2------------");
for(String s:set){
String value = map.get(s);
System.out.println(s+"----"+ value);
}
// 输出map
System.out.println("map: " + map);
}
}


·······················结果···················

map: {历史=79, 政治=86, 语文=80, 数学=90, 外语=99, 生物=98}

----------方式1-------------

历史------79
政治------86
语文------80
数学------90
外语------99
生物------98
----------方式2-------------
历史----79
政治----86
语文----80
数学----90
外语----99
生物----98
map: {历史=79, 政治=86, 语文=80, 数学=90, 外语=99, 生物=98}



···················································

获取功能2【重点】


1)遍历所有的键值对对象的集合【entrySet()

2)遍历每一个键值对对象,获取键和获取对应的值


package com.lyMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;


public class MapTest3 {
public static void main(String[] args) {
// 创建对象
Map<String, String> map = new HashMap<String, String>();

// 加入对象
map.put("语文", "80");
map.put("数学", "90");
map.put("外语", "99");
map.put("政治", "86");
map.put("历史", "79");
map.put("生物", "98");


// 获取所有的键值对对象集合
Set<Entry<String, String>> set = map.entrySet();

for (Entry<String, String> me : set) {
String k = me.getKey();
String v = me.getValue();
System.out.println(k +"----"+ v);
}

System.out.println("map: " + map);
}
}

····························输出结果·····················

历史----79
政治----86
语文----80
数学----90
外语----99
生物----98
map: {历史=79, 政治=86, 语文=80, 数学=90, 外语=99, 生物=98}

······························································



0 0