首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MapIterator返回的MultiKey分解为单独的键

将MapIterator返回的MultiKey分解为单独的键
EN

Stack Overflow用户
提问于 2012-07-17 03:00:09
回答 1查看 3.5K关注 0票数 5

我正在使用Apache Commons Collections创建一个MultiKeyMap,它将存储两个键和一个相应值,然后使用MapIterator遍历映射。我遇到的问题是,我需要将MapIterator返回的键重新分解为单独的键,而不是单个的“组合”。虽然我可以拆分包含“复合”键的字符串或使用反射,但这两种选择似乎都不是很优雅。

为了模拟这个问题,我创建了以下示例代码

代码语言:javascript
复制
MultiKeyMap multiKeyMap = new MultiKeyMap();

multiKeyMap.put("Key 1A","Key 1B","Value 1");
multiKeyMap.put("Key 2A","Key 2B","Value 2");
multiKeyMap.put("Key 3A","Key 3B","Value 3");

MapIterator it = multiKeyMap.mapIterator();

while (it.hasNext()) {
    it.next();
    System.out.println(it.getKey());
    System.out.println(it.getValue());
}

it.getKey()返回MultiKeyKey 3A,Key 3B,但我想要做的是将键赋给单个变量,比如myKey1 = it.getKey().keys[0]myKey2 = it.getKey().keys[1],但我在JavaDoc中找不到任何可以实现这一点的东西。

有没有可能在不使用反射或操作it.getKey()返回的字符串的情况下,将MapIterator返回的键分解为单独的键?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-17 04:42:05

我检查了Commons3.2的source code,MultiKeyMap键是MultiKey的实例,它有一个getKey(int index)方法。还有一个返回Object[]的getKeys()方法。它需要一个造型,但你可以这样做:

代码语言:javascript
复制
MultiKeyMap multiKeyMap = new MultiKeyMap();

multiKeyMap.put("Key 1A","Key 1B","Value 1");
multiKeyMap.put("Key 2A","Key 2B","Value 2");
multiKeyMap.put("Key 3A","Key 3B","Value 3");

MapIterator it = multiKeyMap.mapIterator();

while (it.hasNext()) {
    it.next();

    MultiKey mk = (MultiKey) it.getKey();

    // Option 1
    System.out.println(mk.getKey(0));
    System.out.println(mk.getKey(1));

    // Option 2
    for (Object subkey : mk.getKeys())
      System.out.println(subkey);

    System.out.println(it.getValue());
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11510788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档