public static void main(String... args) {
System.out.println(factorise(2L*2*2*5*5*49*11));
}
static Map<Long, Integer> factorise(long value) {
Map<Long, Integer> map = new LinkedHashMap<>();
for (int i = 2; i * i <= value; i++) {
while (value % i == 0) {
map.merge((long) i, 1, (p, n) -> p == null ? n : p + n);
value /= i;
}
}
if (value > 1)
map.put(value, 1);
return map;
//Get your list in the appropriate way
ArrayList list = getList();
//Make a HashMap
HashMap<int,int> map = new HashMap<>();
for (int i : list) {
if (map.containsKey(i)) {
map.put(i, map.get(i)+1);
} else {
map.put(i, 1);
}
}
5条答案
按热度按时间bvhaajcl1#
可以使用集合的频率函数:
int occurrences = Collections.frequency(yourList, whatToCount) ;
pbpqsu0x2#
您可以在这个用例中使用map。如下所示:
//将所有值放在Map中
//复制Map和视图
j2datikz3#
通过使用groupingby和这样的计数,您可以获得频率计数
在生成每个因子时,计算每个因子的数目将非常简单,而不是生成一个列表。
}
印刷品
{2=3, 5=2, 7=2, 11=1}
70gysomp4#
如果您想手动执行此操作,可以使用
for
回路和aMap
:然后你会有一张Map
int
出现次数的键int
在List
.cbjzeqam5#
您可以使用Map和 Package 器模式来封装一组方法来计算素数以及其他内容。
这与@peter lawrey的解决方案有些不同,因为它在junit框架和lambda流上使用单元测试。此解决方案可能有助于动态测试和检查方法的计算是否正确。