栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习-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 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 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 integerIntegerEntry = ((TreeMap) map).ceilingEntry(3);
  11. System.out.println(integerIntegerEntry);
  12. // 逆序输出集合的全部 Key
  13. NavigableSet integers = ((TreeMap) map).descendingKeySet();
  14. System.out.println(integers);
  15. // 输出集合中键最小的元素
  16. Map.Entry integerIntegerEntry1 = ((TreeMap) 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间编写代码
        
		Scanner sc = new Scanner(System.in);
        // 第一步:接收给定字符串
        String str = sc.next();
        // 第二步:创建HashMap集合,key为城市编码,value为城市名
		Map 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 = ((TreeMap)map).descendingKeySet();
        System.out.println(string);
        // 第六步:输出城市编码最大和最小的元素
        Map.Entry stringEntryMin = ((TreeMap)map).firstEntry();
        Map.Entry stringEntryMax = ((TreeMap)map).lastEntry();
		System.out.println("城市编码最大的元素:" + stringEntryMax + "。城市编码最小的元素:" + stringEntryMin);
        // 第七步:删除城市编码最小的元素
        System.out.println("删除的元素是:" + stringEntryMin);
        ((TreeMap)map).pollFirstEntry();
        System.out.println(map.toString());
        
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号