Java数组中重复数据的删除

用int a[]=new int[]输入一个数组后,怎么样才能从这个数组里找出重复的元素然后删掉?能不能做到把这些重复的元素删掉以后,后面的元素自动往前填补上来?比如说a[0]=1,a[1]=1,a[2]=3,处理完之后能不能变成a[0]=1,a[1]=3这样子的?求解

java数组中去掉重复数据可以使用set集合,set本身内部是不保存重复的数据的,如下代码:

import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;

public class ceshi {
public static void main(String[] args) {

int[] testArr = { 5, 5, 1, 2, 3, 6, -7, 8, 6, 45, 5 };//新建一个int类型数组
System.out.println(Arrays.toString(testArr));
Set<Integer> set = new TreeSet<Integer>();//新建一个set集合
for (int i : testArr) {
set.add(i);
}
Integer[] arr2 = set.toArray(new Integer[0]);
// æ•°ç»„的包装类型不能转 åªèƒ½è‡ªå·±è½¬ï¼›å§Integer转为为int数组;
int[] result = new int[arr2.length];
for (int i = 0; i < result.length; i++) {
result[i] = arr2[i];
}
System.out.println(Arrays.toString(arr2));
}
}

运行结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-29
package com.test.web;

import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;

public class TestSort {
public static void main(String[] args) {
int[] testArr={5,5,1,2,3,6,-7,8,6,45,5};
System.out.println(Arrays.toString(testArr));
Set<Integer> set=new TreeSet<Integer>();
for (int i : testArr) {
set.add(i);
}
Integer[] arr2=set.toArray(new Integer[0]);
//数组的包装类型不能转 只能自己转;吧Integer转为为int数组;
int[] result=new int[arr2.length];
for (int i = 0; i < result.length; i++) {
result[i]=arr2[i];
}
System.out.println(Arrays.toString(arr2));
}


}

你可以用SET,SET不可以添加重复的元素,吧素组转存到SAET当中,再把SET变成数组

追问

能写给我看一下吗?我是初学者没用过set。。。

本回答被提问者采纳
第2个回答  2015-04-29
可以使用List追问

list我也用不来。。求指点

追答import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


public class TestList {

public static void main(String[] args) {
/**
 *List: 可以按顺序存放你存入的数据,当你删除第 N 个元素后, N 后边的元素会逐个向前移
 *Set:是无序存放你存入的数据, 需要使用键值对
 *
 * 你可以通过使用下边的方式 去除一个 List 内重复的数据
 */
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3 );
Set set = new HashSet<Integer>(list);
list = new ArrayList<Integer>(set);

System.out.println(list);

}

}

相似回答