繁体   English   中英

在Guava中,如何创建具有单个元素和n次出现的多重集

[英]In Guava, how to create a Multiset with a single element and n occurrences

我想在Guava中创建一个(不可变的)Multiset,它具有一个具有出现的occurrences入口element ,这两个在编译时都不知道。

我想出的是这样的:

ImmutableMultiset.<X>builder().addCopies(element, occurrences).build()

我想我正在寻找这样的方法:

public static ImmutableMultiset<X> ImmutableMultiset.nOccurrencesOf(
X element, int occurrences){}

要么:

public static ImmutableMultiset<X> Multisets.singletonMultiset(
X element, int occurrences){}

我有没有忽略任何使上述代码更短的方法?

这是不使用构建器的单行解决方案。

ImmutableMultiset<X> multiset = 
  ImmutableMultiset.copyOf(Collections.nCopies(occurrences, element));

但是,这有一个缺点:其运行时间随出现次数而定。 为了获得更好的性能,请使用其他方法之一。

这是另一个选项,但看起来不如您介绍的builder选项好:

Multiset<X> set = HashMultiset.create();
set.add(element, occurrences);
ImmutableMultiset<X> immutableSet = ImmutableMultiset.copyOf(set);

番石榴的贡献者在这里。

坚持建设者。 它已经非常简单,只需一行就解决了这个问题。 这可能不是一个足够普遍的情况,需要使用自己的特殊方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM