我使用的列表如下所示:-
List<Integer> integerlist = new ArrayList<Integer>();
integerlist=primeFactors(numberToBERadical);
当我 sysOut 时,primeFactors 方法返回一些数字:-
System.out.println("integer list=="+integerlist);
integer list==[2, 2, 2, 3, 5]
我的问题是我想计算每个数字出现的次数,以便我可以像这样显示:-
2^3 * 3 * 5
最佳答案
您需要将每个因素与其出现的次数(指数)相关联。
要做到这一点,比列表更好的数据结构是 Map<Integer,Integer>
.
假设您仍然得到 List
来自您的primeFactors(numberToBERadical);
(假设您无法更改它或由于某种原因不想更改)。
你可以这样做:
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(2);
list.add(2);
list.add(3);
list.add(3);
list.add(5);
Map<Integer, Integer> factors = new HashMap<>();
for(Integer fact: list){
if(!factors.containsKey(fact)) { factors.put(fact, 1);}
else {
Integer value = factors.get(fact);
factors.put(fact, ++value);
}
}
System.out.println(factors);
}
打印:{2=3, 3=2, 5=1}
关于java - 无法使用java计算ArrayList中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956926/