1

我有一个包装器 HashMap,我用它来包装带有时间戳的 Set。每个 HashMap 中只添加了一个 Element。

获取此 HashMap 中只有一项的值的最简单方法是什么?即使我知道只有一个项目,我是否必须遍历这个 HashMap?

这是最简单/最快的方法吗:

public long compareTimeCreated(HashMap<HashSet<String>, Long> hashMap1, HashMap<HashSet<String>, Long> hashMap2) {
            long timeDifference = 0;
            long hashMap1Time = 0;
            long hashMap2Time = 0;

            for(Long value : hashMap1.values())
                hashMap1Time = value;

            for(Long value : hashMap2.values())
                hashMap2Time = value;

            timeDifference = (hashMap1Time > hashMap2Time) ? (hashMap1Time - hashMap2Time) : (hashMap2Time - hashMap1Time);

            return timeDifference;
        }
4

2 回答 2

0

不确定这是一个很好的实现,但是鉴于您只有一个值,您可以执行类似的操作

long hashMap1Value = (long)hashMap1.values().toArray()[0];

于 2013-08-05T20:39:23.747 回答
0

如果您知道只有一个项目,您可以使用:

Long value = map.values().iterator().next();

或与番石榴:

Long value = Iterables.getOnlyElement(map.values());

(但我同意使用只有一个元素的地图是不寻常的。有时它可能很有用,通常是为了适应地图的其他用途。这完全取决于上下文。)

于 2013-08-05T20:33:44.390 回答