黑马程序员_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);

}

}

猜你喜欢

转载自blog.csdn.net/u014231961/article/details/84700823