欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

黑马程序员_Map集合方法

程序员文章站 2022-06-14 13:05:14
...

------- 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);

}

 

}

 

相关标签: Map