Java 显示重复的数组,如“0”;数字x重复x次

Java 显示重复的数组,如“0”;数字x重复x次,java,arrays,for-loop,Java,Arrays,For Loop,如何更改代码,以便从数组中仅获取一个数字和重复次数 我尝试了经典的方法,但它显示像“2次重复2次”x2行,“0次重复3次”x3行等,而我只需要一次“2次重复2次;0次重复3次”等 导入java.util.array; 公共班机{ 公共静态void main(字符串[]args){ int[]数组={2,0,-12,0,23,45,-4,-5,2,23,0,9,-7}; 数组。排序(数组); 对于(int i=0;i,由于数组已排序,它只需要一个循环: public static void mai

如何更改代码,以便从数组中仅获取一个数字和重复次数

我尝试了经典的方法,但它显示像“2次重复2次”x2行,“0次重复3次”x3行等,而我只需要一次“2次重复2次;0次重复3次”等

导入java.util.array;
公共班机{
公共静态void main(字符串[]args){
int[]数组={2,0,-12,0,23,45,-4,-5,2,23,0,9,-7};
数组。排序(数组);

对于(int i=0;i,由于数组已排序,它只需要一个循环:

public static void main(String[] args) {
    int[] array = {2, 0, -12, 0, 23, 45, -4, -5, 2, 23, 0, 9, -7};
    Arrays.sort(array);
    int index = 0;
    int counter = 1;
    while (index < array.length - 1) {
        if (array[index] == array[index + 1]) {
            counter++;
        } else {
            if (counter > 1) {
                System.out.println("element " + array[index] + " repeats " + counter + " times");
            }
            counter = 1;
        }
        index++;
    }
    if (counter > 1) {
        System.out.println("element " + array[index] + " repeats " + counter + " times");
    }
}
如果不大于1,则索引将递增,计数器将重置为1。
与for循环相同:

for (index = 0; index < array.length - 1; index++) {
    if (array[index] == array[index + 1]) {
        counter++;
    } else {
        if (counter > 1) {
            System.out.println("element " + array[index] + " repeats " + counter + " times");
        }
        counter = 1;
    }
}
for(index=0;index1){
System.out.println(“元素”+数组[索引]+“重复”+计数器+“次数”);
}
计数器=1;
}
}

由于数组已排序,因此它只需要一个循环:

public static void main(String[] args) {
    int[] array = {2, 0, -12, 0, 23, 45, -4, -5, 2, 23, 0, 9, -7};
    Arrays.sort(array);
    int index = 0;
    int counter = 1;
    while (index < array.length - 1) {
        if (array[index] == array[index + 1]) {
            counter++;
        } else {
            if (counter > 1) {
                System.out.println("element " + array[index] + " repeats " + counter + " times");
            }
            counter = 1;
        }
        index++;
    }
    if (counter > 1) {
        System.out.println("element " + array[index] + " repeats " + counter + " times");
    }
}
如果不大于1,则索引将递增,计数器将重置为1。
与for循环相同:

for (index = 0; index < array.length - 1; index++) {
    if (array[index] == array[index + 1]) {
        counter++;
    } else {
        if (counter > 1) {
            System.out.println("element " + array[index] + " repeats " + counter + " times");
        }
        counter = 1;
    }
}
for(index=0;index1){
System.out.println(“元素”+数组[索引]+“重复”+计数器+“次数”);
}
计数器=1;
}
}

这里有一种方法

int[]数组={2,0,-12,0,23,45,-4,-5,2,23,0,9,-7
};
数组。排序(数组);
整数计数=1;
int v=数组[0];
for(int i=1;i1){
System.out.println(v+“发生”+计数+“次数”);
}
v=阵列[i-1];
计数=1;
}
这里有一些不需要排序的其他方法

publicstaticvoidmethod2(){
int[]数组={2,0,-12,0,23,45,-4,-5,2,23,0,9,-7
};
Map Map=newhashmap();
for(int i:array){
//如果贴图包含数字,则凹凸计数
if(图1){
int count=map.get(i)+1;//递增计数
放(我,伯爵);//放回去
}否则{
map.put(i,1);//将计数初始化为1
}
}
//现在浏览地图,当值大于1时仅显示数字

对于(Map.Entry,这里有一种方法

int[]数组={2,0,-12,0,23,45,-4,-5,2,23,0,9,-7
};
数组。排序(数组);
整数计数=1;
int v=数组[0];
for(int i=1;i1){
System.out.println(v+“发生”+计数+“次数”);
}
v=阵列[i-1];
计数=1;
}
这里有一些不需要排序的其他方法

publicstaticvoidmethod2(){
int[]数组={2,0,-12,0,23,45,-4,-5,2,23,0,9,-7
};
Map Map=newhashmap();
for(int i:array){
//如果贴图包含数字,则凹凸计数
if(图1){
int count=map.get(i)+1;//递增计数
放(我,伯爵);//放回去
}否则{
map.put(i,1);//将计数初始化为1
}
}
//现在浏览地图,当值大于1时仅显示数字

对于(Map.Entry如果您使用Java8或更高版本,您可以根据数字作为键以及它作为值显示的次数对映射中的元素进行分组。之后,您可以过滤并仅显示出现多次的元素

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Integer[] array = {2, 0, -12, 0, 23, 45, -4, -5, 2, 23, 0, 9, -7};

        Arrays.stream(array)
                .collect(Collectors.groupingBy(s -> s))
                .entrySet()
                .stream()
                .filter(e -> e.getValue().size() > 1)
                .forEach(e -> System.out.println("elements " + e.getKey() + " repeats " + e.getValue().size() + " times"));
    }
}

如果您使用Java 8或更高版本,您可以按照数字作为键以及它作为值出现的次数对映射中的元素进行分组。然后,您可以只过滤和显示出现多次的元素

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Integer[] array = {2, 0, -12, 0, 23, 45, -4, -5, 2, 23, 0, 9, -7};

        Arrays.stream(array)
                .collect(Collectors.groupingBy(s -> s))
                .entrySet()
                .stream()
                .filter(e -> e.getValue().size() > 1)
                .forEach(e -> System.out.println("elements " + e.getKey() + " repeats " + e.getValue().size() + " times"));
    }
}

请提供更多的评论为什么这样做有效,为什么他的尝试不成功完整。这是一个:-D谢谢你。你有任何例子在for循环中有效吗?为什么for循环不起作用?我试图构建这个项目,但它没有显示输出。。什么for循环不起作用?我测试了它,它起作用了。@A你接受的答案不起作用此数组的rk:
{2,0,-12,0,23,45,-4,-5,2,23,0,9,-7,45}
请提供更多评论,说明为什么这样做有效,以及为什么他的尝试失败。这是一个:-D谢谢你。你有任何例子在for循环中有效吗?为什么for循环不起作用?我尝试过构建这个项目,但它没有显示输出。。什么for循环不起作用?我测试了它,它起作用了。@a根据你接受的答案,它起作用了不适用于此数组:
{2,0,-12,0,23,45,-4,-5,2,23,0,9,-7,45}
这不适用于:
{2,0,-12,0,23,45,-4,-5,2,23,0,9,-7,45}
你能用一些初学者能理解的词解释一下吗?:-)@alender按要求这不适用于:
{2,0,-12,0,0,23,23,45,-4,-5,2,23,0,9,-7,45}45}
你能用一些初学者能理解的词解释一下吗?:-)@alender