1

セットをタイムスタンプでラップするために使用しているラッパー HashMap があります。各 HashMap に追加される要素は 1 つだけです。

この HashMap で 1 つの項目のみの値を取得する最も簡単な方法は何ですか? アイテムが 1 つしかないとわかっていても、この 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

アイテムが 1 つだけあることがわかっている場合は、次を使用できます。

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

またはグアバで:

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

(しかし、要素が 1 つだけのマップを使用するのは珍しいことに同意します。通常はマップの他の用途に適合させるために役立つ場合があります。それはすべてコンテキストに依存します。)

于 2013-08-05T20:33:44.390 に答える