在Java中,是否有一个对象可以像映射一样存储和访问键/值对,但可以返回键的有序列表和值的有序列表,从而使键和值列表的顺序相同?

因此,作为按代码解释,我正在寻找行为类似于我虚构的OrderedMap的内容:

OrderedMap<Integer, String> om = new OrderedMap<>();
om.put(0, "Zero");
om.put(7, "Seven");

String o = om.get(7); // o is "Seven"
List<Integer> keys = om.getKeys();
List<String> values = om.getValues();

for(int i = 0; i < keys.size(); i++)
{
    Integer key = keys.get(i);
    String value = values.get(i);
    Assert(om.get(key) == value);
}

推荐答案

SortedMap接口(带有实现TreeMap)应该是您的朋友.

该接口具有以下方法:

  • keySet(),它以升序返回一组键
  • values(),它以相应键的升序返回所有值的集合

因此,此接口正好满足您的需求.但是,密钥必须具有有意义的顺序.否则,您可以使用LinkedHashMap,其中顺序由插入顺序确定.

Java相关问答推荐

有没有方法可以修复错误错误:无法初始化主类code_editor?

Java中Stream(java.util.stream)和linkedList数据 struct 之间是什么关系?

伪类focus-in不适用于PFA中的选项卡

Java 21虚拟线程会解决转向react 式单线程框架的主要原因吗?

在Java中将Charsequence数组更改为String数组或List String<>

Mat. n_Delete()和Mat. n_release的区别

测试期间未执行开放重写方法

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

声明MessageChannel Bean的首选方式

使用正则表达式从字符串中提取多个值

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

在Spring Boot应用程序中,server.port=0的默认端口范围是多少?

Dijkstra搜索算法的实现

JOLT根据值删除并保留其余的json键

用于Java的Visual Studio代码完成不起作用

Win32函数的JNA绑定DwmGetColorizationColor返回E_INVALIDARG错误

JavaFX:为什么我的ComboBox添加了一个不必要的单元格的一部分?

在单例类上获取Java锁,了解原因

如何使用Hibernate v6.2构建NamingStrategy,以表名作为所有列的前缀?

如何在MPAndroidChart中的条形图上正确添加标签