第1关:学习-Java集合类之Map的TreeMap之特有方法的使用

目录

任务描述

相关知识

什么是 TreeMap

创建 TreeMap 集合

TreeMap 集合常见方法

编程要求

测试说明

参考答案


任务描述

本关任务:使用 TreeMap 集合操作城市名以及城市编码。

相关知识

什么是 TreeMap

TreeMap 是 Map 接口的实现类,它存储的元素是键值对(key-value)映射,其中 key 值不允许为 null,在添加、删除元素上,TreeMap 要比 HashMap 性能差。另外,它既是无序的,又是有序的。无序指的是存储元素顺序和输出顺序不同,有序指的是 TreeMap 会默认对元素的键进行自然排序(具体排序规则可参考 这个实训中 TreeSet 的排序规则)。

创建 TreeMap 集合

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

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

TreeMap 集合常见方法

TreeMap 集合增删改查相关的方法和 HashMap 集合是一样的,另外,它还有以下特有方法:

方法名                                              方法说明
ceilingEntry(key)方法返回集合中大于或等于且最接近给定 key 值的元素,如果不存在这样的键值对,则返回 null
ceilingKey(key)返回集合中大于或等于且最接近给定 key 值的键值
descendingKeySet()逆序返回集合的全部 Key
firstEntry()返回集合中最小 Key 的元素
floorEntry(key)返回集合中小于或等于且最接近给定 key 值的元素,如果不存在这样的键值对,则返回 null
headMap(key)返回所有小于给定 key 的元素
higherEntry(key)返回所有大于给定 key 的元素
lastEntry()返回 key 最大的元素
pollFirstEntry()删除集合中最小 Key 的元素

TreeMap 集合特有方法使用实例:

 public static void main(String[] args) {
        // 创建 TreeMap 集合,key 存储字符串类型,value 存储整数类型
        Map<Integer, Integer> map = new TreeMap<>();
        // 添加元素
        map.put(100,28);
        map.put(2,26);
        map.put(22,26);
        System.out.println(map);
        // 输出集合中大于或等于且最接近键为 3 的元素
        Map.Entry<Integer, Integer> integerIntegerEntry = ((TreeMap<Integer, Integer>) map).ceilingEntry(3);
        System.out.println(integerIntegerEntry);
        // 逆序输出集合的全部 Key
        NavigableSet<Integer> integers = ((TreeMap<Integer, Integer>) map).descendingKeySet();
        System.out.println(integers);
        // 输出集合中键最小的元素
        Map.Entry<Integer, Integer> integerIntegerEntry1 = ((TreeMap<Integer, Integer>) map).firstEntry();
        System.out.print(integerIntegerEntry1);
    }

执行结果:

  1. {2=26, 22=26, 100=28}
  2. 22=26
  3. [100, 22, 2]
  4. 2=26

编程要求

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

  • 接收给定的一行字符串(如:743:湖南,744:湖北,...,其中数字代表城市编码,数字后是城市名);
  • 切割字符串,把切割后的元素添加进 TreeMap 集合;
  • 逆序输出所有城市编码;
  • 输出城市编码最大和最小的元素(如城市编码最大的元素:744=湖北。城市编码最小的元素:321=北京);
  • 删除城市编码最小的元素(如:删除的元素是:321=北京);
  • 打印集合。

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

测试说明

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

例: 测试输入:

  1. 743:湖南,744:湖北,321:北京

预期输出:

  1. [744, 743, 321]
  2. 城市编码最大的元素:744=湖北。城市编码最小的元素:321=北京
  3. 删除的元素是:321=北京
  4. {743=湖南, 744=湖北}

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

参考答案

import java.util.*;
public class CollTest{
public static void main(String[] args) {
	 // 请在Begin-End间编写代码
	 /********** Begin **********/
				
	 // 第一步:接收给定字符串
  Scanner input=new Scanner(System.in);
  String str=input.nextLine();
    // 第二步:创建HashMap集合,key为城市编码,value为城市名
  Map<String, String> map=new TreeMap<>();
    // 第三步:切割字符串
  String []array1=str.split(",");
    // 第四步:把元素添加到集合中
  for(int i=0;i<array1.length;i++) {				
	String []array2=array1[i].split(":");
  map.put(array2[0], array2[1]);}
    // 第五步:逆序输出所有城市编码
  NavigableSet<String> strings= 
  ((TreeMap<String,String>)map).descendingKeySet();
  System.out.println(strings);
  	// 第六步:输出城市编码最大和最小的元素
  Map.Entry<String,String> stringEntry1=((TreeMap<String,String>) 
  map).lastEntry();
  Map.Entry<String,String> stringEntry2=((TreeMap<String,String>) 
  map).firstEntry();
  System.out.println("城市编码最大的元素:"+stringEntry1+"。城市编码最小的元素:"+stringEntry2);
	// 第七步:删除城市编码最小的元素
  Map.Entry<String,String> stringEntry3=((TreeMap<String,String>) 
  map).pollFirstEntry();
  System.out.println("删除的元素是:"+stringEntry3);
  System.out.print(map.toString());

		        /********** End **********/
		    }
		
		    }
		
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值