1.请简述Map 的特点

Map每个元素由键与值两部分组成

Map键不能重复,每个键对应一个值

键和值可以为null

2.说出Entry键值对对象遍历Map集合的原理。

Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在Map中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

3.请使用Map集合的方法完成添加元素,根据键删除,以及根据键获取值操作。

public class demo09 {
public static void main(String[] args) { // 1.创建HashMap
HashMap<String, String> hm = new HashMap<String, String>(); // 2.使用put添加元素
hm.put("aa", "AA");
hm.put("bb", "BB");
hm.put("cc", "CC");
hm.put("dd", "DD"); // 3.使用put修改元素
String v1 = hm.put("cc", "EE"); // 4.使用get获取元素
String st = hm.get("dd");
System.out.println(st); // 5.使用remove删除元素
String v2 = hm.remove("dd");
System.out.println(v2); // 6.打印集合中的元素
System.out.println(hm); }
}

DD
DD
{aa=AA, bb=BB, cc=EE}

4.往一个Map集合中添加若干元素。获取Map中的所有value,并使用增强for和迭代器遍历输出每个value。

public class demo09 {
public static void main(String[] args) { // 1.创建HashMap
HashMap<String, String> hm = new HashMap<String, String>(); // 2.使用put添加元素
hm.put("aa", "AA");
hm.put("bb", "BB");
hm.put("cc", "CC");
hm.put("dd", "CC"); // 3.使用Map的values方法获取到所有的value
Collection<String> values = hm.values(); // 4.使用增强for获取每个value
for (String value : values) {
System.out.println(value);
} System.out.println("----------------");
// 5.使用迭代器获取每个value
Iterator<String> itr = values.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
} }
}

AA
BB
CC
CC
----------------
AA
BB
CC
CC

5.请使用Map集合存储自定义数据类型Car做键,对应的价格做值。并使用keySet和entrySet两种方式遍历Map集合。

// 1.定义汽车类.包含名称和价格属性,重写hashCode和equals方法
public class Car {
private String name; private String color; public Car() {
} public Car(String name, String color) {
this.name = name;
this.color = color;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getColor() {
return color;
} public void setColor(String color) {
this.color = color;
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Car car = (Car) o;
return Objects.equals(name, car.name) &&
Objects.equals(color, car.color);
} @Override
public int hashCode() { return Objects.hash(name, color);
}
}
public class demo01 {
public static void main(String[] args) {
// 2.创建HashMapkey保存汽车对象,value是汽车价格
HashMap<Car, Integer> hm = new HashMap<>(); // 3.添加汽车到HashMap中
Car c1 = new Car("长安奔奔", "黄色");
Car c3 = new Car("奇瑞QQ", "黑色");
Car c2 = new Car("铃木奥拓", "白色"); hm.put(c1, 10000);
hm.put(c2, 20000);
hm.put(c3, 30000); // 4.使用keySet方式遍历Map
Set<Car> keySet = hm.keySet();
for (Car c : keySet) {
// 根据key获取value
Integer value = hm.get(c);
System.out.println(c.getName() + ","+ c.getColor() + " - "+ value);
} System.out.println("-------------"); // 5.使用entrySet方式遍历Map
Set<Map.Entry<Car, Integer>> entrySet = hm.entrySet();
for (Map.Entry<Car, Integer> entry : entrySet) {
Car key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key.getName() + ","+ key.getColor() + " - "+ value);
} }
}

长安奔奔,黄色 - 10000
铃木奥拓,白色 - 20000
奇瑞QQ,黑色 - 30000
-------------
长安奔奔,黄色 - 10000
铃木奥拓,白色 - 20000
奇瑞QQ,黑色 - 30000

6

Map<Integer,String> map = new HashMap<Integer, String>();

        map.put(1, "AA");
map.put(2, "BB");
map.put(3, "CC");
map.put(4, "DD");

要求:

1.遍历集合,并将序号与对应人名打印。

2.向该map集合中插入一个编码为5姓名为EE的信息

3.移除该map中的编号为1的信息

4.将map集合中编号为2的姓名信息修改为"FF"

public class demo02 {
public static void main(String[] args) {
// 1.定义HashMap,编号作为key,姓名作为value
Map<Integer,String> map = new HashMap<Integer, String>(); // 2.使用put方法添加元素
map.put(1, "AA");
map.put(2, "BB");
map.put(3, "CC");
map.put(4, "DD"); // 3.使用keySet+增强for迭代map中的元素,并打印
Set<Integer> keySet = map.keySet();
for (Integer key : keySet) {
String value = map.get(key);
System.out.println(key + " -- "+ value);
} // 4.使用put向该map集合中插入一个编码为5姓名为EE的信息
map.put(5, "EE"); // 5.使用remove移除该map中的编号为1的信息
map.remove(1); // 6.使用put将map集合中编号为2的姓名信息修改为"FF"
map.put(2, "FF");
System.out.println(map); }
}

1 -- AA
2 -- BB
3 -- CC
4 -- DD
{2=FF, 3=CC, 4=DD, 5=EE}

7.有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省],第二个数组为:[哈尔滨,杭州,南昌,广州,福州],将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。如{黑龙江省=哈尔滨, 浙江省=杭州, …}

public class demo03 {
public static void main(String[] args) {
// 1.定义第一个数组arr1
String[] arr1 = {"黑龙江省", "浙江省", "江西省", "广东省", "福建省"};
// 2.定义第二个数组arr2
String[] arr2 = {"哈尔滨", "杭州", "南昌", "广州", "福州"}; // 3.创建HashMap,key存放省,value存放市
HashMap<String, String> hm = new HashMap<>(); // 4.使用普通for循环遍历arr1
for (int i = 0; i < arr1.length; i++) {
// 5.根据索引到arr1中获取到省
String key = arr1[i];
// 6.根据索引到arr2中获取到省会城市
String value = arr2[i]; // 7.将省和省会城市添加到HashMap中
hm.put(key, value);
}
// 8.输出HashMap中的内容
System.out.println(hm); }
}

java基础2(Map)的更多相关文章

  1. Java基础关于Map(字典)的方法使用

    Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...

  2. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  3. JAVA基础之Map接口

    个人理解: 个人感觉Map接口以后会经常用到,可以很清晰地查找某个对象,要熟悉其四种遍历方法.特别注意其键值对的键不能是重复的,有想定义有序存取的话,可以使用LinkedHashMap集合.不过定义自 ...

  4. java 基础 --Collection(Map)

    Map是不是集合?哈哈哈 java编程思想>的第11章,第216页,正数第13行,中原文:“……其中基本的类型是LIst.Set.Queue和Map.这些对象类型也称为集合类,但由于Java类库 ...

  5. [Java基础]List,Map集合总结

    java.util包下: Collection    |--List 接口 |----ArrayList |----LinkedList |----Vector |-----Stack |---Set ...

  6. java基础(20):Map、可变参数、Collections

    1. Map接口 1.1 Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤 ...

  7. Java 基础:Map的一家

    0.Java中的集合框架 1.Map--接口 public interface Map<K,V> 包:java.util.Map Map提供了一种映射关系,其中的元素是以键值对(key-v ...

  8. Java基础教程——Map

    Map 返回类型 方法 描述 V get(Object key) 根据key取得value V put(Obejct k,Object v) 向Map中加入(替换)元素,返回之前的Value:之前没有 ...

  9. 【JAVA基础】 MAP 遍历

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  10. Java基础之Map的遍历

    遍历Map集合,有四种方法:   public static void main(String[] args) { Map<String, String> map = new HashMa ...

随机推荐

  1. linux系统空间不足,lsof看到异常的delete状态的文件。

    #20191101更新---这篇文章适用于产生僵尸文件的进程是可kill的状态参考,就是这个进程死亡不影响业务,那么另外一种情况,也是我现在管理的项目中生产环境中出现过的情况,产生僵尸文件的进程是we ...

  2. python - paramiko模块 修改logging提示为静默

    import paramiko import logging log = paramiko.util.get_logger("paramiko") log.setLevel(log ...

  3. 转: Android 设备的远程调试入门

    从 Windows.Mac 或 Linux 计算机远程调试 Android 设备上的实时内容. 本教程将向您展示如何: 设置您的 Android 设备进行远程调试,并从开发计算机上发现设备. 从您的开 ...

  4. HideTcpip.c

    隐藏tcp端口,来自看雪 /////////////////////////////////////////////////////////////////////////////////////// ...

  5. 获取sql server中自增量之scope_identity(),@@Identity,IDENT_CURRENT的区别

    http://www.lmwlove.com/ac/ID480 在sql server2005,如果要获某个表最新增加的自增量,我们都知道,可以使用COPE_IDENTITY. IDENT_CURRE ...

  6. Python浅拷贝与深拷贝(可变对象与不可变对象)

    第一次遇到深拷贝和浅拷贝的问题是用python在一个for循环中对一个list赋值,使用的语句是 a = b 这个b会不断带入循环,每次计算得到,最后发现list乱七八糟的,后来才发现,python中 ...

  7. Docker在windows环境下的安装部署

    一.准备 系统环境:Windows 10 64bit Docker安装包:Docker for Windows Installer.exe 二.安装步骤 1.开启系统的hyper-v 2. 重启电脑后 ...

  8. CreateCompatibleBitmap 的使用

    函数功能:该函数创建与指定的设备环境相关的设备兼容的位图. 函数原型:HBITMAP CreateCompatibleBitmap(HDC hdc,int nWidth,int nHeight): 参 ...

  9. Object.assign()的用法 -- 用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,返回目标对象

    语法: Object.assign(target, …sources) target: 目标对象,sources: 源对象用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. ...

  10. CTF—攻防练习之HTTP—命令执行漏洞

    渗透环境: 主机:192.168.32.152 靶机:192.168.32.1 命令执行漏洞 命令执行漏洞概念:当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数.如PHP中 ...