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

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

任务描述

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

相关知识

什么是 TreeMap

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

创建 TreeMap 集合

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

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

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 集合特有方法使用实例:

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

执行结果:

 
  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=湖北}

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

注释:发表本篇文章的本意是记录TreeMap的使用方法,同时也是为了以后查询方便,在网上搜查过后,并未发现此文章,便将答案也贴出来。

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

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qing影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值