Java程序问题
用数组存储输入的若干整数(可使用随机类或函数生成一定范围的随机整数),求出现次数超过3次的整数。
请问各位这个用java怎么写
Integer[] integers = ThreadLocalRandom.current().ints(1, 10).boxed().limit(20).toArray(Integer[]::new);
Map<Integer, Long> collect = Arrays.stream(integers).collect(Collectors.groupingBy(Integer::new, Collectors.counting()));
List<Integer> nums = collect.entrySet().stream().filter(f -> f.getValue() > 3).map(Map.Entry::getKey).collect(Collectors.toList());
// 随机数数组
System.out.println(Arrays.toString(integers));
// 每个随机数对应出现的次数
System.out.println(collect);
// 最终出现次数大于3的随机数
System.out.println(nums);
暴力方式, 毫无技巧可言
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
int[] arr = {1,2,3,3,3,4,4,1223,1223,1223};
List<Integer> data = Arrays.stream(arr).boxed().collect(Collectors.toList());
List<String> result = data
.stream()
.collect(Collectors.groupingBy(Object::toString, Collectors.counting()))
.entrySet()
.stream()
.filter(size -> size.getValue() >= 3)
.map(Map.Entry::getKey).collect(Collectors.toList());
System.out.println(result);
}
}