黑马程序员_Map集合方法
------- android培训、java培训、期待与您交流! ----------
Map集合.
Collection
一次存储一个对象作为集合的一个元素...
程序更复杂的需求.
需要保存对象和对象之间的关系的. 如何保存?
贪吃蛇游戏:
配置信息: key value
高 10
宽 20
集合特殊,一次可以存储2个对象, 并保存这个对象之间一一对应的映射关系...
key value
学号 <->学生
身份证号 <->人
查看文档:
该集合Map 和Collection 体系不同,一次存储2个对象.这两个对象在Map集合中称之为键(key)和值(value)
该集合key 不能重复(唯一的), 值和键之间的映射是一一对应的.
Map 接口的方法实例:
package cn.itcast.c_map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapDemo1 {
public static void main(String[] args) {
// testPut();
// testMapMethod();
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1001, "jack");
map.put(1002, "rose");
map.put(1003, "lucy");
map.put(1004, "lucy");
// 取出Map 集合中的所有元素.
// 方式一: values 方法,取出Map 集合中所有的值(value)
// 缺点: 无法通过值取出对应的键, Map 集合的值是可以重复的...
Collection<String> coll=map.values();
Iterator<String> it = coll.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//方式二: keySet 方法, 取出Map 集合中所有的键(key)
// 缺点: 不面向对象.
Set<Integer> set=map.keySet();
Iterator<Integer> sit = set.iterator();
while(sit.hasNext()){
int key=sit.next();
//System.out.println(key);
String value=map.get(key);
System.out.println(key+":"+value);
}
//方式三: entrySet 方法. 取出Map集合中所有的键值映射(Entry 对象)
Set<Entry<Integer,String>> entrySet=map.entrySet();
//获取Set 集合的迭代器. 该Set 集合存储的Entry 对象.
Iterator<Entry<Integer,String>> eit=entrySet.iterator();
// 使用迭代器逐个取出该Set 集合中的每一个Entry对象.
while(eit.hasNext()){
Entry<Integer,String> entry=eit.next();
// 使用Entry 对象的专业的get 方法,获取键和值.
Integer key = entry.getKey();
String value=entry.getValue();
System.out.println(key+"#"+value);
}
}
public static void testMapMethod() {
// 1. 创建Map 集合
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1001, "jack");
map.put(1002, "rose");
map.put(1003, "lucy");
map.put(1004, "lucy");
// 2.putAll 批量增加.
Map<Integer, String> map1 = new HashMap<Integer, String>();
map1.put(100, "李磊");
map1.put(102, "韩梅");
map1.put(103, "张三");
map.putAll(map1);
System.out.println(map);
// 3. remove(Object key) 通过键,删除对应的键值对. 返回被删除的键对应的值.
System.out.println(map.remove(1002));
System.out.println(map);
// 4. 注意: remove 只能通过键删除对应的键值对.
System.out.println(map.remove("jack"));
System.out.println(map);
// 5. clear 清空集合.
// map.clear();
// System.out.println(map);
// 6. get(Object key) 通过key 获取key 对应的值.
// 6.1 注意, 只提供了通过key 获取值的方法,没有通过值获取key 的方法.
System.out.println(map.get(1001));
// 7.containsKey 检测集合是否包含指定的键.
// 8.containsValue 检测集合是否包含指定的值.
System.out.println(map.containsKey(1001));
System.out.println(map.containsKey(1009));
System.out.println(map.containsValue("jack"));
System.out.println(map.containsValue("张三丰"));
}
public static void testPut() {
// 1. 创建Map 集合
Map<Integer, String> map = new HashMap<Integer, String>();
// 2. 使用map 集合存储元素... 一次存储2个对象, 成为键(key)和值(value)
System.out.println(map.put(1001, "jack"));
System.out.println(map.put(1002, "rose"));
System.out.println(map.put(1003, "lucy"));
// 3. 打印集合
System.out.println(map);
System.out.println(map.size());
// 4. 所谓的一一映射,键唯一,键和值之间的映射是一对一的. 如果尝试往指定的键添加新值,新值覆盖旧值.
System.out.println(map.put(1001, "xxx"));
System.out.println(map);
}
}
package cn.itcast.c_map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapTest {
/**
* @param args
*/
public static void main(String[] args) {
//test1();
test2();
}
public static void test2() {
//创建Map
Map<Integer, String> map = new HashMap<Integer,String>();
map.put(1001, "seek1");
map.put(1002, "seek2");
map.put(1003, "seek3");
map.put(1004, "seek4");
// 取出Map 集合中的所有元素.
// 方式一: values 方法,取出Map 集合中所有的值(value)
// 缺点: 无法通过值取出对应的键, Map 集合的值是可以重复的...
Collection<String> coll = map.values();
Iterator<String> it = coll.iterator();
while (it.hasNext()) {
sop(it.next());
}
//方式二: keySet 方法, 取出Map 集合中所有的键(key)
// 缺点: 不面向对象.
Set<Integer> coll1 = map.keySet();
Iterator<Integer> it1 = coll1.iterator();
while (it1.hasNext()) {
int key = it1.next();
String value = map.get(key);
sop(key+" : "+value);
}
//方式三: entrySet 方法. 取出Map集合中所有的键值映射(Entry 对象)
Set<Entry<Integer, String>> set =map.entrySet();
//获取Set 集合的迭代器. 该Set 集合存储的Entry 对象.
Iterator<Entry<Integer, String>> iit = set.iterator();
// 使用迭代器逐个取出该Set 集合中的每一个Entry对象.
while (iit.hasNext()) {
Entry<Integer, String> s = iit.next();
Integer key = s.getKey();
String value = s.getValue();
sop(key+"----"+value);
}
}
public static void test1() {
//创建Map
Map<Integer, String> map = new HashMap<Integer,String>();
//put(K key, V value)添加元素
map.put(101, "jake1");
map.put(102, "jake2");
map.put(103, "jake3");
sop(map);
//putAll(Map<? extends K,? extends V> m) 批量添加
Map<Integer, String> map1 = new HashMap<Integer,String>();
map1.put(111, "rose1");
map1.put(112, "rose2");
map1.put(113, "rose3");
sop(map1);
map.putAll(map1);
sop(map);
//一对一,键是唯一的,如果给指定的键添加薪值,那么子新值会覆盖旧值。
map.put(101, "rose");
sop(map);
// remove(Object key) 通过键,删除对应的键值对. 返回被删除的键对应的值.
map.remove(111);
sop(map);
//clear 清空集合.
//map.clear();
//sop(map);
//get(Object key) 通过key 获取key 对应的值.
sop(map.get(113));
//containsKey 检测集合是否包含指定的键.
sop(map.containsKey(112));
//.containsValue 检测集合是否包含指定的值.
sop(map.containsValue("rose2"));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
推荐阅读
-
json对象转map集合(json转map最快的方法)
-
Java 遍历取出Map集合key-value数据的4种方法
-
json对象转map集合(json转map最快的方法)
-
Java分享笔记:使用keySet方法获取Map集合中的元素
-
Java分享笔记:Map集合(接口)的基本方法程序演示
-
Java 遍历取出Map集合key-value数据的4种方法
-
map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
-
集合框架——Map、泛型以及Collection算法常用方法
-
荐 Map集合【集合特点、常用方法、集合遍历方式】以及其子类HashMap、LinkedHashMap集合的相关用法
-
解决Map集合使用get方法返回null抛出空指针异常问题