是否有可用于检查数组是否包含n个特定整数的方法?检查Java数组是否包含n个特定整数
所以说我们有数组:
int[] arr = {1, 2 , 3 , 4, 5, 5, 4, 3, 2, 1}
我们可以检查,如果ARR包含2个5的。或者如果arr包含3 2的。
是否有可用于检查数组是否包含n个特定整数的方法?检查Java数组是否包含n个特定整数
所以说我们有数组:
int[] arr = {1, 2 , 3 , 4, 5, 5, 4, 3, 2, 1}
我们可以检查,如果ARR包含2个5的。或者如果arr包含3 2的。
澄清RC's
评论。你可以使用番石榴的ImmutableMultiset和多集如下:
Multiset<Integer> set = ImmutableMultiset.copyOf(myarray);
int countOf5s = set.count(5);
这是不是这里的明显简单的答案,但我喜欢这样番石榴想我会放在插头。
这对于原始数组不适用,如果OP有一个引用类型的数组,那么'Collections.frequency(Arrays.asList(myarray),5)'会为他做,并且更加高效。 – 2014-11-03 14:46:03
我忘了'频率'。谢谢。但是,恕我直言的表现可能会有争议,因为如果只进行一次查询,这可能只会更高效。如果进行多次计数检查,我认为整套计划可能会更快。 WRT'int []',番石榴的'Ints.asList'在那里工作得很好。 – 2014-11-03 14:54:23
对于较小的原始数组,您需要一个完整的lotta查找来打败专用于该案例的三线程方法。特别是考虑到整个数组将在L1缓存中,并且如果要求检查数组是否至少有*所请求的数值,则更是如此。 – 2014-11-03 14:59:28
如果你只是想算一个元素出现,没有理由建立一个Multiset
计算所有的元素,但仍然番石榴将帮助你..
int countOf5s = Collections.frequency(Ints.asList(intArray), 5);
是的,我们可以(呃,听起来像熟悉的东西)!你到目前为止做了什么? – Dici 2014-11-03 14:34:46
没有开箱即用的方法,你必须自己做(或使用番石榴Multiset) – 2014-11-03 14:35:32
酷,只是想知道如果我不得不自己做一个 – 2014-11-03 14:35:57