常州工学院Java作业05

第1关:学习-Java集合类之Map的HashMap之常用方法的使用

相关知识

什么是 HashMap

HashMap 是 Map 接口的实现类,它存储的内容是键值对(key-value)映射,其中 key、value 都可以为 null。HashMap 是无序的,即被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。

创建 HashMap 集合

使用以下代码即可创建一个 HashMap 集合。

  1. public static void main(String[] args) {
  2.    // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
  3.    Map<String, Integer> hashMap = new HashMap<>();
  4.     }

HashMap 集合常用方法

下表展示了 HashMap 集合的常用方法:

方法名

方法说明

put()方法

往集合中添加元素,key 值不可重复,重复时会覆盖之前的 value 值

size()方法

返回集合长度

get(key)方法

获取对应 key 值的 value 值

clear()方法

清除集合中的所有元素

values()方法

返回一个新集合,获取集合中所有元素的 values

keySet()方法

返回一个新集合,获取集合中所有元素的 key

remove()方法

根据 key 或者 key-value 去除集合中元素,并分别返回 value 值和 Boolean 值

iterator()方法

返回一个迭代器对象

entrySet()方法

将 Map 集合每个 key-value 转换为一个 Entry 对象,并返回由所有的 Entry 对象组成的 Set 集合

containsKey()

判断集合中是否含右指定的 key 值

常用方法示例:

  1.  public static void main(String[] args) {
  2.         // 创建 HashMap 集合,key存储字符串类型,value存储整数类型
  3.         Map<String, Integer> hashMap = new HashMap<>();
  4.         // 添加元素
  5.         hashMap.put("李四",28);
  6.         hashMap.put("张三",26);
  7.         hashMap.put("王五",26);
  8.         // 根据 key 获取 value 值
  9.         Integer zs = hashMap.get("张三");
  10.         System.out.println(zs);
  11.         // 获取所有 key 值
  12.         Set<String> strings = hashMap.keySet();
  13.         System.out.println(strings);
  14.         // 获取所有 value 值
  15.         Collection<Integer> values = hashMap.values();
  16.         System.out.println(values);
  17.         // 根据 key 去除元素
  18.         Integer ww = hashMap.remove("王五");
  19.         System.out.println(ww);
  20.         // 根据 key-value 去除元素
  21.         boolean boole = hashMap.remove("李四", 28);
  22.         System.out.println(boole);     
  23.         System.out.print(hashMap);
  24.     }

执行结果:

  1. 26
  2. [李四, 张三, 王五]
  3. [28, 26, 26]
  4. 26
  5. true
  6. {张三=26}

遍历 HashMap 集合

以下是三种常用遍历方法。

  1. public static void main(String[] args) {
  2.         // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
  3.         Map<String, Integer> map = new HashMap<>();
  4.         // 添加元素
  5.         map.put("李四",28);
  6.         map.put("张三",26);
  7.         map.put("王五",26);
  8.         //第一种:通过 keySet 遍历,普遍使用
  9.         for (String key : map.keySet()) {
  10.             System.out.println("key= "+ key + " and value= " + map.get(key));
  11.              System.out.println(----------);
  12.         }
  13.         //第二种:通过 entrySet 和迭代器遍历
  14.         Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
  15.         while (it.hasNext()) {
  16.             Map.Entry<String, Integer> entry = it.next();
  17.             System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  18.             System.out.println(----------);
  19.         }
  20.         //第三种:通过 entrySet 和增强 for 循环遍历,推荐,尤其是容量大时
  21.         for (Map.Entry<String, Integer> entry : map.entrySet()) {
  22.             System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  23.             System.out.println(----------);
  24.         }
  25.         }

执行结果:

  1. key= 李四 and value= 28
  2. key= 张三 and value= 26
  3. key= 王五 and value= 26
  4. ----------
  5. key= 李四 and value= 28
  6. key= 张三 and value= 26
  7. key= 王五 and value= 26
  8. ----------
  9. key= 李四 and value= 28
  10. key= 张三 and value= 26
  11. key= 王五 and value= 26

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,使用 HashMap 集合的常用方法完成所给要求,具体如下:

  • 接收给定的一行字符串(如:红烧鱼:50,小炒牛肉:75,…);
  • 切割字符串,把切割后的元素添加进 HashMap 集合中;
  • 往集合中添加一道菜,菜名:lamb,价格:50;
  • 输出所有菜名(不含价格);
  • 删除红烧鱼和小炒牛肉这两道菜后输出集合长度;
  • 打印集合。

注意:字符串中的逗号和分号都是中文符号。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

  1. 粉蒸肉:50,红烧鱼:50,小炒牛肉:75,手撕包菜:20,蒜蓉虾:100

预期输出:

  1. [手撕包菜, 蒜蓉虾, lamb, 小炒牛肉, 粉蒸肉, 红烧鱼]
  2. 4
  3. {手撕包菜=20, 蒜蓉虾=100, lamb=50, 粉蒸肉=50}


开始你的任务吧,祝你成功!

/*
仔细阅读给出的代码框架及注释,在 Begin-End 间编写程序代码,使用 HashMap 集合的常用方法完成所给要求,具体如下:
- 接收给定的一行字符串(如:红烧鱼:50,小炒牛肉:75,...);
- 切割字符串,把切割后的元素添加进 HashMap 集合中;
- 往集合中添加一道菜,菜名:lamb,价格:50;
- 输出所有菜名(不含价格);
- 删除红烧鱼和小炒牛肉这两道菜后输出集合长度;
- 打印集合。

注意:字符串中的逗号和分号都是中文符号。
*/

import java.util.*;

public class CollTest {
    public static void main(String[] args) {
        // 请在Begin-End间编写代码
        /********** Begin **********/
        // 第一步:接收给定字符串
        Scanner scan=new Scanner(System.in);
        String strings=scan.nextLine();
        // 第二步:切割字符串
        String []str=strings.split(",");
        // 第三步:创建 HashMap 集合,key为菜名,value为价格
        Map<String,Integer>hasMap=new HashMap<String,Integer>();
        // 第四步:添加数据到集合中
        for(int i=0;i<str.length;i++) {
            String[] k=str[i].split(":");
            Integer v=Integer.valueOf(k[1]).intValue();
            hasMap.put(k[0], v);
        }

        // 第五步:往集合中添加给定的一道菜
        hasMap.put("lamb", 50);
        // 第六步:输出所有菜名
        System.out.println(hasMap.keySet());
        // 第七步:删除红烧鱼和小炒牛肉这两道菜后输出集合长度
        hasMap.remove("红烧鱼");
        hasMap.remove("小炒牛肉");
        System.out.println(hasMap.size());
        // 第八步:打印集合
        System.out.println(hasMap);
        /********** End **********/
    }
}

 

1关:学习-Java集合类之Map接口之学生花名册

任务描述

本关任务:把给定的学生花名册数据添加到 Map 集合中。

相关知识

在 Java 的集合体系中,主要包含 Collection 接口以及 Map 接口,本实训将介绍 Map 接口相关知识。

什么是 Map

Collection 接口下的所有子类只可以存储单值元素,倘若我们想要存储键值对元素(如:<张三,男>)到集合中,就必须使用 Map 接口下的实现类(如 HashMap 集合或者 TreeMap 集合)。Map 提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,我们可以根据 key(如:张三) 快速查找 value(如:男),其中键(key)值不可以重复,值(value)是可以重复的。

创建 Map 集合

由于 Map 是一个接口,不能直接实例化,所以只能创建 Map 的引用指向子类对象集合。

  1. public static void main(String[] args) {
  2.   // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
  3.   Map<String, Integer> HashMap = new HashMap<>();
  4.   // 创建 TreeMap 集合,key 存储整数类型,value 存储字符串类型
  5.   Map<Integer, String> TreeMap = new TreeMap<>();
  6.     }

往 Map 集合添加数据

我们使用 put(k,v) 方法就可以往集合中添加数据。

  1. public static void main(String[] args) {
  2.         // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
  3.         Map<String, Integer> hashMap = new HashMap<>();
  4.         hashMap.put("张三",26);
  5.         hashMap.put("李四",28);
  6.         // 打印集合
  7.         System.out.println(hashMap);
  8.         // 创建 TreeMap 集合,key 存储整数类型,value 存储字符串类型
  9.         Map<Integer, String> treeMap = new TreeMap<>();
  10.         treeMap.put(4,"哈密瓜");
  11.         // 打印集合
  12.         System.out.println(treeMap);
  13.     }

执行结果:

  1. {李四=28, 张三=26}
  2. {4=哈密瓜}

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,把给定的学生花名册数据添加到 Map 集合中,具体要求如下:

  • 接收给定的一行字符串(该字符串是学生花名册,如:王亮:24,赵建:25,…,其中 key 为姓名,value 为年龄);
  • 切割花名册字符串,把切割后的元素添加到 Map 集合中;
  • 打印集合。

注意:字符串中的逗号和冒号都是中文符号。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

  1. 王亮:24,赵建:25

预期输出:

  1. {赵建=25, 王亮=24}

 

import java.util.*;

public class CollTest {
    public static void main(String[] args) {
        // 请在Begin-End间编写代码
        /********** Begin **********/
        // 第一步:接收给定字符串
        Scanner sc=new Scanner(System.in);
        String line=sc.nextLine();
        // 第二步:切割花名册
        String[] str=line.split(",");
        // 第三步:创建 HashMap 集合,key 为姓名,value 为年龄
        Map<String,String> hashmap=new HashMap<>();
        // 第四步:添加数据到集合中
        for(int i=0;i<str.length;i++){
        String[] key=str[i].split(":");
        hashmap.put(key[0], key[1]);
        }
        // 第五步:打印集合
        System.out.print(hashmap);
        /********** End **********/

    }
}

 

第1关:练习-Java集合类之Set的HashSet之组成字符串的字符

任务描述

本关任务: 使用 HashSet 集合输出给定字符串中的所有字符(重复字符只需输出一个)。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,输出给定字符串中的所有字符,具体要求如下:

  • 接收给定的一个字符串(如:hello);
  • 使用 HashSet 集合输出字符串中的的所有字符(升序,且重复字符只需输出一个)。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

  1. hello

预期输出:

  1. e
  2. h
  3. l
  4. o

注意:输出的最后一个字符后面还有一行空行。

/*
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,输出给定字符串中的所有字符,具体要求如下:
- 接收给定的一个字符串(如:hello);
- 使用 HashSet 集合输出字符串中的的所有字符(重复字符只需输出一个)。
*/

// 请在Begin-End间编写代码
/********** Begin **********/
// 第一步:导入相关类
import java.util.HashSet;
import java.util.Scanner;
// 第二步:创建CollTest类
public  class CollTest{ 
    public static void main(String[] args){  
// 第三步:接收给定的字符串
    Scanner  sc =new Scanner(System.in);
// 第四步:创建集合
    HashSet<Character> hs = new HashSet<>();
    String line = sc.nextLine();         
    char[] arr = line.toCharArray();        
// 第五步:将字符串中的每个字符添加进集合
    for (char c : arr) {  
       hs.add(c);
    }
// 第六步:输出组成字符串的字符
    for(Character ch : hs) {
        System.out.println(ch);
    }
  }
}
/********** End **********/

第1关:学习-Java集合类之List的ArrayList之增删改查

任务描述

本关任务:创建 ArrayList 集合并使用它的增删改查方法。 接收给定的一行字符串,实现如下需求: 1.通过空格(一个)切割字符串; 2.创建一个 ArrayList 集合; 3.将切割后的字符串元素添加至集合中; 4.删除集合的第一个和最后一个元素; 5.添加两个字符串:hello,educoder 至集合中; 6.修改集合的第三个元素,改为:list; 7.打印集合。

相关知识

List 集合

List 集合用于存储有序的、可以重复的元素,因此我们可以通过索引来访问、遍历元素。它主要有 ArrayList 和 LinkedList 两个实现类,本实训将介绍 ArrayList 集合。

ArrayList 集合

ArrayList 是 List 集合的实现类,它的底层数据结构是数组,因此它具有查询快,增删慢的特点。

创建 ArrayList 集合

  1. // 导入相关类
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class ExcTest {
  5.     public static void main(String[] args)  {
  6.     // 创建ArrayList集合
  7.     List list=new ArrayList<String>();     
  8.     }  
  9. }

可以看到创建 ArrayList 集合时使用的是父类的引用指向子类对象,这种方式可以大大的提高程序的可扩展性

ArrayList 集合的增删改查

增删改查示例:

  1.  public static void main(String[] args)  {
  2.         // 创建ArrayList集合
  3.         List<String> list=new ArrayList<>();     
  4.         // 使用add()方法增加元素
  5.         list.add("list");     // 在最新位置添加指定元素
  6.         list.add(1,"hello");     // 在指定位置添加元素
  7.         list.add(2,"java");     // 在指定位置添加元素
  8.         System.out.println(list);
  9.         // 使用get()方法获取指定索引处元素,索引值从0开始
  10.         String s = list.get(0);
  11.         System.out.println(s);
  12.         // 使用set()方法修改指定索引位置的元素值
  13.         list.set(1,"hi");
  14.         System.out.println(list);
  15.         // 使用remove()方法删除指定元素
  16.         list.remove(0);     // 删除指定索引的元素
  17.         list.remove("hi");     // 删除指定元素
  18.         System.out.print(list);
  19.     }

执行结果:

  1. [list, hello, java]
  2. list
  3. [list, hi, java]
  4. [java]

遍历 ArrayList

遍历集合有三种方式: 1.使用迭代器遍历;

  1.   public static void main(String[] args)  {
  2.         // 创建ArrayList集合
  3.         List<String> list=new ArrayList<>();    
  4.         // 使用add()方法添加元素
  5.         list.add("list");
  6.         list.add(1,"hello");
  7.         list.add(2,"java");
  8.         list.add("java");
  9.         // 通过迭代器遍历集合
  10.         Iterator<String> iterator = list.iterator();
  11.         while(iterator.hasNext()){
  12.             System.out.println(iterator.next());
  13.         }
  14.     }

2.使用 foreach 遍历;

  1.  public static void main(String[] args)  {
  2.         // 创建ArrayList集合
  3.         List<String> list=new ArrayList<>();
  4.         // 使用add()方法添加元素
  5.         list.add("list");
  6.         list.add(1,"hello");
  7.         list.add(2,"java");
  8.         list.add("java");
  9.         // 通过foreach遍历集合
  10.         for(String s:list){
  11.             System.out.println(s);
  12.         }
  13.         }

3.使用 size() 方法获取集合长度,配合 for 循环遍历集合。

  1.  public static void main(String[] args)  {
  2.         // 创建ArrayList集合
  3.         List<String> list=new ArrayList<>();
  4.         // 使用add()方法添加元素
  5.         list.add("list");
  6.         list.add(1,"hello");
  7.         list.add(2,"java");
  8.         list.add("java");
  9.         // 通过 size() 方法遍历集合
  10.         for(int x=0;x<list.size();x++){
  11.             System.out.println(list.get(x));
  12.         }
  13.         }

以上三种方式执行结果:

  1. list
  2. hello
  3. java
  4. java

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,创建 ArrayList 集合并使用它的增删改查方法,具体要求如下:

  • 接收给定的一行字符串(如:32 rfsd fwq g3r3qt t3q4t。);
  • 通过空格(一个)切割字符串;
  • 创建一个 ArrayList 集合;
  • 将切割后的字符串元素添加至集合中;
  • 删除集合的第一个和最后一个元素;
  • 添加两个字符串:hello,educoder 至集合中;
  • 修改集合的第三个元素,改为:list;
  • 打印集合。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

  1. 32 rfsd fwq g3r3qt t3q4t qt ta

预期输出:

  1. [rfsd, fwq, list, t3q4t, qt, hello, educoder]
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    public class CollTest {
        public static void main(String[] args) {
            // 请在Begin-End间编写代码
            /********** Begin **********/
            // 第一步:接收给定的一行字符串
            Scanner in=new Scanner(System.in);
            String strs=in.nextLine();
            // 第二步:切割字符串
            String[] ser=strs.split(" ");
            // 第三步:创建集合
          ArrayList<String> array=new ArrayList<String>();
            // 第四步:往集合中添加元素
          for(int i=0;i<ser.length;i++)
          {
              array.add(ser[i]);
          }
            // 第五步:删除第一个元素和最后一个元素
          array.remove(0); 
          array.remove(array.size()-1); 
            // 第六步:往集合中添加hello和educoder
          array.add("hello");
          array.add("educoder");
            // 第七步:修改集合中第三个元素为list
          array.set(2,"list");
            // 第八步:打印集合
          System.out.println(array);
            /********** End **********/
     
        }
    }
    
    

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值