Java学习笔记之输出数组重复元素及次数

方法·一

public class Test {
    public static void main(String[] args) {
        Random random = new Random();
        int[] arr = new int[20];
        for (int i = 0; i < 20; i++) {
            arr[i] = random.nextInt(10);
            System.out.print(arr[i] + ",");
        }
        System.out.println();
        //输出arr数组中重复元素,重复数量
        Map<Integer,Integer> map = findRepeat(arr);
        if(map!=null){
            for (Map.Entry<Integer,Integer> entry : map.entrySet()){
                if(entry.getValue()>1){
                    System.out.println("元素 "+entry.getKey()+" 重复出现"+entry.getValue()+"次");
                }else{
                    System.out.println("元素 "+entry.getKey()+" 只出现1次 无重复");
                }
            }
        }
    }
    //判断方法
    private static Map<Integer, Integer> findRepeat(int[] arr){
        Map<Integer, Integer> map = new HashMap<>();
        if(arr == null || arr.length <= 0){
            return null;
        }
        for(int i = 0; i < arr.length; i ++){
            if(map.containsKey(arr[i])){
                map.put(arr[i], map.get(arr[i])+1);
            }else{
                map.put(arr[i], 1);
            }
        }
        return map;
    }
}

方法二

public class Test {
    public static void main(String[] args) {
        Random random = new Random();
        int[] arr = new int[20];
        for (int i = 0; i < 20; i++) {
            arr[i] = random.nextInt(10);
            System.out.print(arr[i] + ",");
        }
        System.out.println();
        //输出arr数组中重复元素,重复数量
        findRepeat(arr);
    }
    public static void findRepeat(int [] arr){
        List<Integer> resultList = Arrays.stream(arr).boxed().collect(Collectors.toList());
        while(resultList.size() > 0){
            int k = resultList.get(0);
            int num = 0;
            Iterator<Integer> it = resultList.iterator();
            while(it.hasNext()){
                int x = it.next();
                if(x == k){
                    num++;
                    it.remove();
                }
            }
            if(num>1){
                System.out.println("元素 "+k+" 重复出现"+num+"次");
            }else{
                System.out.println("元素 "+k+" 只出现1次 无重复");
            }
        }
    }
}

方法三
纯纯的数组形式

public class Test {
    public static void main(String[] args) {
        Random random = new Random();
        int[] arr = new int[20];
        for (int i = 0; i < 20; i++) {
            arr[i] = random.nextInt(10);
            System.out.print(arr[i] + ",");
        }
        System.out.println();
        //输出arr数组中重复元素,重复数量
        newMethod(arr);
    }
    public static void newMethod(int []arr)
    {
        int rec = arr.length;
        while(rec>0){
            int k = arr[0];
            int num = 0;
            for(int j = 0;j<rec;j++){
                if(k == arr[j])
                {
                    num++;//相同元素加一
                    //删除元素
                    rec = delElement(j,arr,rec);
                    j--;//删除之后元素前移一个位置
                }
            }
            if(num>1){
                System.out.println("元素 "+k+" 重复出现"+num+"次");
            }else{
                System.out.println("元素 "+k+" 只出现1次 无重复");
            }
        }
    }
    //删除某一位置的元素
    public static int  delElement(int a,int arr [],int rec){
        if (a < 0 || a >= rec) {
            throw new RuntimeException("越界");
        }
        for(int i = a;i < rec-1;i++)
        {
            arr[i] = arr[i+1];
        }
        return rec-1;
    }
}

今天接近一天的经历2020年4月11日晚22:01

发布了22 篇原创文章 · 获赞 0 · 访问量 427

猜你喜欢

转载自blog.csdn.net/ENDEAVOR__/article/details/105460681