首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JAVA HashMap 2D,无法获得制作2D HashMap的正确方法,我的意思是将HashMap转换为另一个HashMap

根据您提供的信息,您似乎正在寻找将Java HashMap 2D转换为另一个HashMap的正确方法。以下是一个可能的解决方案:

方法1:使用Collections.reverse()

此方法不涉及修改HashMap,而只是调整其顺序。首先,创建一个新的HashMap,然后使用Collections.reverse()方法将原始HashMap的顺序颠倒。

代码语言:java
复制
import java.util.Collections;

// ...

public static HashMap<String, String> reverseHashMap(HashMap<String, String> map) {
    HashMap<String, String> reversedMap = new HashMap<>();

    for (Map.Entry<String, String> entry : map.entrySet()) {
        reversedMap.put(entry.getValue(), entry.getKey());
    }

    return Collections.reverse(reversedMap.entrySet());
}

// Usage
HashMap<String, String> originalMap = new HashMap<>();
// Add values to the map
originalMap.put("Key1", "Value1");
originalMap.put("Key2", "Value2");
originalMap.put("Key3", "Value3");

HashMap<String, String> reversedMap = reverseHashMap(originalMap);
// The reversed map is now:
// {"Value3": "Key2", "Value2": "Key1", "Value1": "Key3"}

方法2:使用Map.Entry.setValue()

此方法需要修改原始HashMap。首先,创建一个新的HashMap,然后使用Map.Entry.setValue()方法将原始HashMap的每个值替换为新HashMap的相应值。

代码语言:java
复制
import java.util.HashMap;

// ...

public static void reverseHashMap(HashMap<String, String> map) {
    HashMap<String, String> reversedMap = new HashMap<>();

    for (Map.Entry<String, String> entry : map.entrySet()) {
        String key = entry.getKey();
        String value = entry.getValue();
        reversedMap.put(value, key);
    }
}

// Usage
HashMap<String, String> originalMap = new HashMap<>();
// Add values to the map
originalMap.put("Key1", "Value1");
originalMap.put("Key2", "Value2");
originalMap.put("Key3", "Value3");

reverseHashMap(originalMap);
// The original map is now:
// {"Key3": "Value1", "Key1": "Value2", "Key2": "Value3"}

注意:这两种方法都只能将键值对从HashMap 2D的“第一维”移动到“第二维”。换句话说,它们会交换键值对,但不会改变键值对的顺序。这两种方法都不能完全反转HashMap 2D,因为HashMap没有内置的方法来反转其键值对。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • java学习要点

    作为一个程序员,在找工作的过程中,都会遇到笔试,而很多笔试里面都包括java,尤其是作为一个Android开发工程师,java是必备技能之一.所以为了笔试过程中能够有一个不错的成绩,我在网上也找了好多关于java面试的题目.下面是整理的相关资料.参考作者jackfrued(简书作者)hongdada(简书作者). 面向对象的特征有哪些方面--面向对象的特征主要有一下几个方面: 抽象,继承,封装,多态 下面将一一解释.抽象是将一类对象的共同特征总结出来构造类的过程.包括数据抽象和行为抽象两部分.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 继承: 继承是从已有类得到继承信息创建新类的过程,提供继承信息的类被称为父类(基类或者超类);得到继承信息的类被称为子类或者派生类.继承让变化中的软件系统有了一定的延续性.同时继承也是封装程序中可变因素的重要手段.(在这里可以参考阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分) 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已经定义的窗口.面向对象的本质是将现实世界描绘成一系列完全封闭自治的对象. 我们在类中编写的方法就是对实现细节的一种封装. 我们编写一个类就是对数据和数据操作一种封装. 封装是隐藏一切可以隐藏的东西,只向外界提供最简单的编程接口. (就像我们现在使用的很多东西,其实过程很复杂,但是到了我们使用的那一步就是最简单的了,因为把复杂的过程都封装起来了,只给我们最简单的接口.) 多态: 多态是指允许不同子类型的对象对同一消息做出不同的响应.可以理解为同样的对象调用了同样的方法但是实现了不同的功能.多态又分为编译时的多态和运行时的多态.如果将对象的方法视为对象向外界提供的服务,那么运行时的多态可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力).

    06

    2D-Driven 3D Object Detection in RGB-D Images

    在本文中,我们提出了一种在RGB-D场景中,在目标周围放置三维包围框的技术。我们的方法充分利用二维信息,利用最先进的二维目标检测技术,快速减少三维搜索空间。然后,我们使用3D信息来定位、放置和对目标周围的包围框进行评分。我们使用之前利用常规信息的技术,独立地估计每个目标的方向。三维物体的位置和大小是用多层感知器(MLP)学习的。在最后一个步骤中,我们根据场景中的目标类关系改进我们的检测。最先进的检测方法相比,操作几乎完全在稀疏的3D域,在著名的SUN RGB-D实验数据集表明,我们建议的方法要快得多(4.1 s /图像)RGB-D图像中的3目标检测和执行更好的地图(3)高于慢是4.7倍的最先进的方法和相对慢两个数量级的方法。这一工作提示我们应该进一步研究3D中2D驱动的目标检测,特别是在3D输入稀疏的情况下。

    03
    领券