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. 浅析java中的四种线程池

      1.使用线程池的好处 2.JUC中几种常用的线程池 java.util.concurrent包下的Executors工厂类,提供了一系列的线程池的创建方法,其构造方法如下: public Thre ...

  2. C#连接内存数据库redis【1、Redis存读取数据】

    这一节演示下载.NET中怎样使用Redis存储数据.在.net中比较常用的客户端类库是ServiceStack,看下通过servicestack怎样存储数据. DLL下载:https://github ...

  3. Maven-SSM框架整合

    1.创建Maven项目 配置pom.xml依赖 <!-- 允许创建jsp页面 --> <dependency> <groupId>javax.servlet< ...

  4. Java模拟实现百度文档在线浏览

    Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper ...

  5. web容器启动加载WebApplicationContext和初始化DispatcherServlet

    原文地址:http://blog.csdn.net/zghwaicsdn/article/details/51186915 ContextLoaderListener监听器,加载ROOT WebApp ...

  6. EF Code First 学习笔记:约定配置 Data Annotations+Fluent API

    要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...

  7. 第一个python-ui界面

    首先是安装eric6简直是个灾难,先是找不到汉化版的eric6,好不容易找到了,一打开eric6的窗体就说designer.exe不存在,确实在PyQt5里没有,明明在PyQt5-tools里面有,最 ...

  8. Python:Base2(List和Tuple类型, 条件判断和循环,Dict和Set类型)

    1.Python创建list: Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: &g ...

  9. Sqlserver实现故障转移 — AlwaysOn实现故障转移(4)

    目的:在已经加域的计算机上安装sqlserver2012,并配置系统级故障转移及数据库,实现AlwayOn. 域控的建立详见:https://www.cnblogs.com/xiaoerlang90/ ...

  10. Unity中的全局坐标系和局部坐标系

      全局坐标系 描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系.在Unity场景中创建的物体都是以全局坐标系中的坐标原点(0,0,0)来确定各自的位置的. 局部坐标系 每个物体都有其独立的坐 ...