黑马程序员技术交流社区
标题:
关于入学基础测试中的“数组去重”问题
[打印本页]
作者:
小小菜鸟
时间:
2014-1-5 10:50
标题:
关于入学基础测试中的“数组去重”问题
本帖最后由 小小菜鸟 于 2014-1-5 15:06 编辑
数组去重例如:
原始数组是{4,2,4,6,1,2,4,7,8}
得到结果{4,2,6,1,7,8}
作者:
程玉习
时间:
2014-1-5 11:06
本帖最后由 程玉习 于 2014-1-5 11:09 编辑
我用的是集合,HashSetpublic class Test5 {
static int[] arr = {4,2,4,6,1,2,4,7,8};
public static void main(String[] args) {
delRep(arr);
}
//定义一个方法,形参接收一个整型数组
public static void delRep(int[] arr) {
HashSet<Integer> hashSet = new HashSet<Integer>();
for (int i = 0; i < arr.length; i++) {
hashSet.add(arr
);
}
System.out.println(hashSet);
}
}
作者:
松毛
时间:
2014-1-5 12:29
本帖最后由 松毛 于 2014-1-5 12:32 编辑
利用集合可以把它弄出来!这下面是我的代码
import java.util.ArrayList;
public class Test08 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = {4,2,4,6,1,2,4,7,8};
System.out.println(singleElemet(array)/*.toArray()*/);//这得到的是一个集合,只要把他转换正数组就行;
}
private static ArrayList<Integer> singleElemet(int[] array) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<array.length; i++){
list.add(array[i]);
}
ArrayList<Integer> li = new ArrayList<Integer>();
for(Integer list1: list){
if(!(li.contains(list1)))
li.add(list1);
}
return li;
}
}
复制代码
作者:
疯狂的土贼
时间:
2014-1-5 12:31
参考下以上的方式 采用集合的形式解决即可
作者:
jibenwujie
时间:
2014-1-5 13:55
public class Test02 {
/**
* @param args
*/
public static void main(String[] args) {
int a[] = {4,2,4,6,1,2,4,7,8};
Set<Integer> set = new HashSet<Integer>();
//存入hashset 自动去重复
for(int i = 0 ; i < a.length ; i ++){
set.add(a[i]);
}
}
}
复制代码
楼主你好,使用HashSet的不重复的特点 ,即可解决去重复问题
作者:
ixiangfeng
时间:
2014-1-5 14:11
用集合的话应该很简单,因为集合本身的比较器就具有去重功能
我再发个用数组写的 稍微复杂一点
public class Demo
{
public static void main(String [] args)
{
int [] arr = {4,2,4,6,1,2,4,7,8};
int [] arr1 = new int [arr.length];//用于存放去重后的数组
int pos = 0;//数组指针
boolean flag = true;//定义标记,用于判断是否是重复元素
for (int x = arr.length-1; x >=0 ; x--)//遍历数组,把一元素和后面所有
{ //元素进行比较,若相同,则改变
for (int y = x-1; y >= 0; y--) //标记flag,若该元素与后面所有
{ //元素都不同,则标记不变,将其
if (arr[x] == arr[y]) //存入新数组中,然后重置标记
{
flag = false;
}
}
if (flag)
{
arr1[pos++] = arr[x];
}
flag = true;
}
for ( int x = pos-1; x >=0; x--)
{
System.out.print(arr1[x]+" ");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2