热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaLinkedHashMap中高效地提取首个或末尾的键值对?

如何从 Java LinkedHashMap 中获取第一个或最后一个条目?原文:https://www . geesforgek

如何从 Java LinkedHashMap 中获取第一个或最后一个条目?

原文:https://www . geesforgeks . org/how-first-or-last-entry-from-Java-linked hashmap/

LinkedHashMap 是 Java 中的一个预定义类,类似于 HashMap,包含键及其各自的值,不像 HashMap,在 LinkedHashMap 中插入顺序是保留的。任务是获取 LinkedHashMap 中出现的第一个和最后一个条目。迭代以获得最后一个和第一个值。“映射”中的第一个和最后一个条目是首先插入的条目,也是最后插入的条目,插入顺序保持不变。

方法:


  1. 使用 for-each 循环在地图上迭代的简单方法。

  2. 将 LinkedHashMap 的键转换为整数数组。

  3. 将 LinkedHashMap 中的键转换为 List,如 ArrayList 到 LinkedList。

插图:

输入:

键 2:值 5

键- 14:值-35

键- 31:值-20

键- 36:值-18

键- 52:值-6

输出:

关键字值

第一-> 2 5

最后-> 52 6

方法 1: 使用 for-each 循环在地图上迭代的简单方法。

构造函数 getFirst()getLast()


  • getFirst() 打印第一个条目

  • getLast() 移动到最后一个条目(索引等于 LinkedHashMap 的大小)

示例:

Java 语言(一种计算机语言,尤用于创建网站)


// Java Program to get first or last entry
// from Java LinkedHashMap
// Importing all class of
// java.util package
import java.util.*;
// Importing java input/output classes
import java.io.*;
class GFG {
  // getLast() method
    public static void
    getLast(LinkedHashMap<Integer, Integer> lhm)
    {
        int count = 1;
        for (Map.Entry<Integer, Integer> it :
             lhm.entrySet()) {
            if (count == lhm.size()) {
                System.out.println("Last Key-> "+it.getKey());
              System.out.println("Last Value-> "+it.getValue());
                return;
            }
            count++;
        }
    }
  // getFirst() method to get first element from
  // java LinkedHashMap
    public static void
    getFirst(LinkedHashMap<Integer, Integer> lhm)
    {
        int count = 1;
        for (Map.Entry<Integer, Integer> it :
             lhm.entrySet()) {
            if (count == 1) {
              System.out.println("First Key-> "+it.getKey());
              System.out.println("First Value-> "+it.getValue());
                return;
            }
            count++;
        }
    }
  // Main driver method
    public static void main(String[] args)
    {
      // Creating(defining) a LinkedHashMap
        LinkedHashMap<Integer, Integer> LHM
            = new LinkedHashMap<>();
      // Adding elements to above LinkedHashMap
        LHM.put(2, 5);
        LHM.put(14, 35);
        LHM.put(36, 20);
        LHM.put(34, 18);
        LHM.put(52, 6);
      // Calling getFirst() method in main()
        getFirst(LHM);
      // Calling getLast() method in main()
        getLast(LHM);
    }
}

Output

First Key-> 2
First Value-> 5
Last Key-> 52
Last Value-> 6

时间复杂度:0(n)

方法 2: 将 LinkedHashMap 的键转换为整数数组。

算法:


  • 获取与键对应的第一个和值。

  • 打印与键对应的最后一个值。


Pseudo Code :
Integer[] aKeys = LHM.keySet().toArray(new Integer[LHM.size()]);
// where LHM is name of LinkedHashMap created and aKeys of array to be converted.

示例:

Java 语言(一种计算机语言,尤用于创建网站)


// Java Program to get first or last entry
// from Java LinkedHashMap
// By converting Map to integer array
// Importing all class of
// java.util package
import java.util.*;
// Importing java input/output classes
import java.io.*;
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a LinkedHashMAp
        LinkedHashMap<Integer, Integer> LHM
            = new LinkedHashMap<>();
        // Adding. elements to above LinkedHashMap
        // Custom inputs
        LHM.put(1, 8);
        LHM.put(2, 6);
        LHM.put(3, 7);
        LHM.put(4, 2);
        LHM.put(5, 5);
        // Getting all keys from the LinkedHashMap, and
        // converting it to an array
        Integer[] aKeys
            = LHM.keySet().toArray(new Integer[LHM.size()]);
        // Condition check
        // If array is having element
        // Print key and value
        if (aKeys.length > 0) {
            // Print first key and first value
            // From integer array
            System.out.println("First key-> " + aKeys[0]);
            System.out.println("First value-> "
                               + LHM.get(aKeys[0]));
            // Print first key from integer array
            System.out.println("Last key-> "
                               + aKeys[aKeys.length - 1]);
            // Print last value from integer array
            System.out.println(
                "Last value-> "
                + LHM.get(aKeys[aKeys.length - 1]));
        }
    }
}

Output

First key-> 1
First value-> 8
Last key-> 5
Last value-> 5

时间复杂度:0(1)

方法 3: 将 LinkedHashMap 中的键转换为 List,如 ArrayList 到 LinkedList。

算法


  • 首先获取与该键对应的值。

  • 打印最后一个和对应键的值。


Pseudo Code:
List<Integer> lKeys = new ArrayList<Integer>(LHM.keySet());
// where LHM is name of LinkedHashMap and
lKeys is name of List

Java 语言(一种计算机语言,尤用于创建网站)


// Java Program to get first or last entry
// from Java LinkedHashMap
// By converting Map to List
// Importing all class of
// java.util package
import java.util.*;
// Importing java input/output classes
import java.io.*;
// Main class
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a LinkedHashMapc
        LinkedHashMap<Integer, Integer> LHM
            = new LinkedHashMap<>();
        // Adding elements to above LinkedHashMap
        // Custom inputs
        LHM.put(1, 8);
        LHM.put(2, 6);
        LHM.put(3, 7);
        LHM.put(4, 2);
        LHM.put(5, 5);
        // Creating a List
        List<Integer> lKeys
            = new ArrayList<Integer>(LHM.keySet());
        // Condition check
        // If there is single element in List
        // Print key and value
        if (lKeys.size() > 0) {
            // Print first key form List
            System.out.println("First key: "
                               + lKeys.get(0));
            // Print first value from List
            System.out.println("First value: "
                               + LHM.get(lKeys.get(0)));
            // Print last key from List
            System.out.println(
                "Last key: " + lKeys.get(lKeys.size() - 1));
            // Print last value from List
            System.out.println(
                "Last value: "
                + LHM.get(lKeys.get(lKeys.size() - 1)));
        }
    }
}

Output

First key: 1
First value: 8
Last key: 5
Last value: 5

时间复杂度:0(1)


推荐阅读
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Java 9 中 SafeVarargs 注释的使用与示例解析 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 本文介绍了一种基于最大匹配算法的简易分词程序的设计与实现。该程序通过引入哈希集合存储词典,利用前向最大匹配方法对输入文本进行高效分词处理,具有较高的准确率和较快的处理速度,适用于中文文本的快速分词需求。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • Java新手求助:如何优雅地向心仪女生索要QQ联系方式(附代码示例与技巧)
    在端午节后的闲暇时光中,我无意间在技术社区里发现了一篇关于如何巧妙地向心仪女生索取QQ联系方式的文章,顿时感到精神焕发。这篇文章详细介绍了源自《啊哈!算法》的方法,不仅图文并茂,还提供了实用的代码示例和技巧,非常适合 Java 新手学习和参考。 ... [详细]
author-avatar
手机用户2502886741
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有