打印int数组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

我是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};
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()));