首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java实现数组去重的有关问题

2012-04-10 
java实现数组去重的问题想实现数组去重问题。下面我的是方法是采用0去其中换掉重复的值,然后按不为零的输出

java实现数组去重的问题
想实现数组去重问题。下面我的是方法是采用0去其中换掉重复的值,然后按不为零的输出,达到去重的。然后我在想能不能直接实现重复的值一个个被覆盖,比如1 1 2 3 3 4 5 6 7 8;其中数组装的一个1和3直接清除掉,数组长度也缩短2个呢?
具体该怎么实现呢?困惑了好久

Java code
package test;import java.util.Scanner;public class Exercise6_51 {    public static void main(String args[]){        int[] a=new int[10];        Scanner input=new Scanner(System.in);        System.out.print("Enter ten numbers:");        for(int i=0;i<a.length;i++){            a[i]=input.nextInt();        }        for(int i=0;i<a.length;i++){            for(int j=i;j<a.length-1;j++){                if(a[i]==a[j+1]){                    a[j+1]=0;                }            }        }        //java.util.Arrays.sort(a);        System.out.print("The distinct numbers are:");        for(int i=0;i<a.length;i++){            if(a[i]!=0){                System.out.print(a[i]+" ");            }        }          }         }


[解决办法]
Java code
    public static void main(String[] args) {                int[] arr = new int[] { 1, 1, 2, 3, 3, 4, 5, 6, 7, 8 };        Set<Integer> set = new TreeSet<Integer>();        for (int i : arr) {            set.add(i);        }        int[] des = new int[set.size()];        int j = 0;        for (Integer i : set) {            des[j++] = i;        }        System.out.println(Arrays.toString(des));    }
[解决办法]
楼主的方法中存在一个问题,如果数组本身就存在重复的0,处理就会得到错误的结果
使用set是一种好办法
如果要自己实现的话,
常规的做法是新建一个数组,原始数组中的值一次放入新建数组中,放入之前进行比较
复杂度为O(n*n)

热点排行