从 google HashMultimap 访问元素时出现问题

发布于 2024-09-28 18:30:18 字数 542 浏览 6 评论 0原文

我正在使用下面的代码来获取 &来自google HashMultimap的过程值

    HashMultimap hmm = new HashMultimap();
    HashMultimap hmm2 = new HashMultimap();
    Element ele;
:
    hmm2.put("name","Amit");
    hmm.put("Amit",ele);
    hmm.put("rohit",hmm2);
 :   
    Iterator itr =  hmm.keys().iterator();
    String ky = (String) itr.next();
    System.out.println(hmm.get(ky));
    ky = (String) itr.next();
    System.out.println(hmm.get(ky));

在上面的代码中,如果映射元素(或条目)是元素类型,那么我想做一些操作。如果是HashMultimap类型则进行其他操作。我如何检查对象并将其传递给另一个函数。

I am using below code to get & process value from google HashMultimap

    HashMultimap hmm = new HashMultimap();
    HashMultimap hmm2 = new HashMultimap();
    Element ele;
:
    hmm2.put("name","Amit");
    hmm.put("Amit",ele);
    hmm.put("rohit",hmm2);
 :   
    Iterator itr =  hmm.keys().iterator();
    String ky = (String) itr.next();
    System.out.println(hmm.get(ky));
    ky = (String) itr.next();
    System.out.println(hmm.get(ky));

In above code, if map element(or entry) is Element type then i want to do some operation. If it is HashMultimap type then do some other operation. How can i check and pass the object to another function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫性小仙女 2024-10-05 18:30:18

由于这是一个 HashMultimap,它也是一个 SetMultimap,因此当您调用 hmm.get(ky) 时,返回的值将是 < code>Set 该键的所有值。然后,您应该能够迭代 Set 中的每个值并对这些值使用 instanceof。如果每个键不会有多个值,则您不应首先使用 Multimap,而应仅使用普通的 HashMap。

    HashMultimap hmm = HashMultimap.create();
    HashMultimap hmm2 = HashMultimap.create();
    Element ele = new Element();
    hmm2.put("name", "Amit");
    hmm.put("Amit", ele);
    hmm.put("rohit", hmm2);
    Iterator itr = hmm.keys().iterator();
    String ky = (String) itr.next();

    Set elements = hmm.get(ky);
    Iterator elementsItr = elements.iterator();
    Object val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

    ky = (String) itr.next();
    elements = hmm.get(ky);
    elementsItr = elements.iterator();
    val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

关键点是,在 HashMultimap 上调用 get() 会返回一个 Set 值,而不是单个值。

Since this is a HashMultimap which is also a SetMultimap, when you call hmm.get(ky) the value returned is going to be a Set of all the values for that key. You should then be able to iterate through each of the values in the Set and use instanceof on those values. If there are not going to be multiple values for each key, you shouldn't be using a Multimap to begin with and should just use normal HashMap.

    HashMultimap hmm = HashMultimap.create();
    HashMultimap hmm2 = HashMultimap.create();
    Element ele = new Element();
    hmm2.put("name", "Amit");
    hmm.put("Amit", ele);
    hmm.put("rohit", hmm2);
    Iterator itr = hmm.keys().iterator();
    String ky = (String) itr.next();

    Set elements = hmm.get(ky);
    Iterator elementsItr = elements.iterator();
    Object val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

    ky = (String) itr.next();
    elements = hmm.get(ky);
    elementsItr = elements.iterator();
    val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

The key point is that calling get() on a HashMultimap returns a Set of values and not a single value.

方圜几里 2024-10-05 18:30:18

使用instanceof关键字。

就像这样:
if (item instanceof Element) //做事情

Use the instanceof keyword.

Like so:
if (item instanceof Element) //Do things

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文