打印int数组java中每个值的重复数量
我是java新手,必须完成这项任务。问题是,如何从数组中计算方法中的所有重复项,并将它们按如下方式列出:打印int数组java中每个值的重复数量,java,arrays,sorting,multidimensional-array,Java,Arrays,Sorting,Multidimensional Array,我是java新手,必须完成这项任务。问题是,如何从数组中计算方法中的所有重复项,并将它们按如下方式列出: int [] arr = new int[] {2,5,6,1,2,1,5,3,6,1,2,1,5}; Arrays.sort(arr); 值必须按整数排序,并按如下方式列出: 1-4 2-3 3-1 5-3 6-2 希望有意义。您可以像这样使用地图: int[] arr = new int[]{2, 5, 6, 1, 2, 1, 5, 3, 6, 1, 2, 1, 5}; Array
int [] arr = new int[] {2,5,6,1,2,1,5,3,6,1,2,1,5};
Arrays.sort(arr);
值必须按整数排序,并按如下方式列出:
- 1-4
- 2-3
- 3-1
- 5-3
- 6-2
希望有意义。您可以像这样使用地图:
int[] arr = new int[]{2, 5, 6, 1, 2, 1, 5, 3, 6, 1, 2, 1, 5};
Arrays.sort(arr);
Map<Integer, Integer> map = new HashMap<>();
for (Integer i : arr) {
//if the key exit then increment it else add a new element
if (map.containsKey(i)) {
map.put(i, map.get(i)+1);
}else{
map.put(i, 1);
}
}
//display your map
map.forEach((key, value) -> {
System.out.println(". " + key + " - " + value);
});
您可以使用
TreeMap
按键对项目进行排序,只需为每次出现增加一个计数器
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class Counter {
public static void main(String[] args) {
int[] arr = { 2, 5, 6, 1, 2, 1, 5, 3, 6, 1, 2, 1, 5 };
Map<Integer, Integer> frequency = count(arr);
for (Entry<Integer, Integer> freq : frequency.entrySet()) {
System.out.printf("%s - %s%n", freq.getKey(), freq.getValue());
}
}
public static Map<Integer, Integer> count(int[] items) {
Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
for (int item : items) {
map.put(item, 1 + (map.containsKey(item) ? map.get(item).intValue() : 0));
}
return map;
}
}
import java.util.Map;
导入java.util.Map.Entry;
导入java.util.TreeMap;
公共课柜台{
公共静态void main(字符串[]args){
int[]arr={2,5,6,1,2,1,5,3,6,1,2,1,5};
映射频率=计数(arr);
对于(条目频率:frequency.entrySet()){
System.out.printf(“%s-%s%n”,freq.getKey(),freq.getValue());
}
}
公共静态映射计数(int[]项){
Map Map=newtreemap();
用于(整数项:项){
map.put(item,1+(map.containsKey(item)?map.get(item.intValue():0));
}
返回图;
}
}
您也可以在一行中完成
Arrays.stream(arr).boxed().collect(Collectors.toSet()).stream().forEach(e ->System.out.println(e + " -> " + Arrays.stream(arr).filter(x -> x == e).count()));
让我们看看你试了什么?我们不会帮你做作业的。展示你的努力。请展示你尝试了什么,还有,你是否考虑过使用hashmap?我认为一条评论就足够了,请尝试传递建设性的评论。@Dazak我尝试了很多不同的事情,但都没有成功。。但是YCF_L的版本做到了这一点。或者
Arrays.stream(arr).sorted().boxed().collect(Collectors.groupby(Function.identity(),LinkedHashMap::new,Collectors.summingit(x->1)).forEach((k,v)->System.out.println(k+“-”+v))代码>谢谢@shmosel这很好
Arrays.stream(arr).boxed().collect(Collectors.toSet()).stream().forEach(e ->System.out.println(e + " -> " + Arrays.stream(arr).filter(x -> x == e).count()));