java实现数组去重的问题 用set 不就ok 了吗?干嘛要自己去写方法呢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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)); } 你不用Set要自己写的话,就实现equals和hashcode来判断,具体细节你可以参考Set 楼主的方法中存在一个问题,如果数组本身就存在重复的0,处理就会得到错误的结果使用set是一种好办法如果要自己实现的话,常规的做法是新建一个数组,原始数组中的值一次放入新建数组中,放入之前进行比较复杂度为O(n*n) 受教了~利用TreeSet没有重复元素的特性达到去除重复元素的目的 package test;import java.util.Scanner;public class Exercise6_51 { public static void main(String args[]){ int[] a=new int[10]; int length=a.length; //int i,j,k; 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<length;i++){ for(int j=i;j<length-1;j++){ if(a[i]==a[j+1]){ for(int k=j+1;k<length-1;k++){ a[k]=a[k+1]; } length--; j--; } } } //java.util.Arrays.sort(a); System.out.print("The distinct numbers are:"); for(int i=0;i<length;i++){ System.out.print(a[i]+" "); } } }这样就可以了,0的问题解决了,谢谢大家了 package com.sesan.last;import java.util.Scanner;public class Exercise6_51 { public static void main(String args[]){ int[] a={1,3,4,5,3,2,5,6,4,3,2,2,2,2,2,2,6}; int length=a.length; //int i,j,k; for(int i=0;i<length;i++){ for(int j=i;j<length-1;j++){ if(a[i]==a[j+1]){ for(int k=j+1;k<length-1;k++){ a[k]=a[k+1]; for(int m=0;m<length;m++){ System.out.print(a[m]+" "); } System.out.println(","); } length--; // j--; } } } //java.util.Arrays.sort(a); System.out.print("The distinct numbers are:"); for(int i=0;i<length;i++){ System.out.print(a[i]+" "); } } }结果还有重复的,需要再改进The distinct numbers are:1 3 4 5 2 6 2 2 关于参数传递的最基础问题,100分送上! java中的“不等于”能用<>吗? Hibernate UUID 的问题 关于==xml==解析的选型问题,betwixt、digester、crimson、xmlbeans还是xerces 基础问题,解决即给分,up有分 一句话问题! 急!急!急!如何将一个字符串分段显示!! 急,急,急!!!! 如何在jframe中导入两张图片(gif),让一个押在另一个上边…… java访问MS SQL Server的jdbc url怎么写? 在Eclipse下编译直接通不过,可是直接在命令行下是可以运行的,求解。。。 修改图片的exif信息
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));
}
使用set是一种好办法
如果要自己实现的话,
常规的做法是新建一个数组,原始数组中的值一次放入新建数组中,放入之前进行比较
复杂度为O(n*n)
package test;
import java.util.Scanner;
public class Exercise6_51 {
public static void main(String args[]){
int[] a=new int[10];
int length=a.length;
//int i,j,k;
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<length;i++){
for(int j=i;j<length-1;j++){
if(a[i]==a[j+1]){
for(int k=j+1;k<length-1;k++){
a[k]=a[k+1];
}
length--;
j--;
}
}
}
//java.util.Arrays.sort(a);
System.out.print("The distinct numbers are:");
for(int i=0;i<length;i++){
System.out.print(a[i]+" ");
}
}
}
这样就可以了,0的问题解决了,谢谢大家了
public static void main(String args[]){
int[] a={1,3,4,5,3,2,5,6,4,3,2,2,2,2,2,2,6};
int length=a.length;
//int i,j,k; for(int i=0;i<length;i++){
for(int j=i;j<length-1;j++){
if(a[i]==a[j+1]){
for(int k=j+1;k<length-1;k++){
a[k]=a[k+1];
for(int m=0;m<length;m++){
System.out.print(a[m]+" ");
}
System.out.println(",");
}
length--;
// j--;
}
}
}
//java.util.Arrays.sort(a);
System.out.print("The distinct numbers are:");
for(int i=0;i<length;i++){
System.out.print(a[i]+" ");
}
}
}
结果还有重复的,需要再改进The distinct numbers are:1 3 4 5 2 6 2 2