黑马程序员技术交流社区
标题:
关于数组去重复的问题……
[打印本页]
作者:
编程学徙
时间:
2014-5-10 02:11
标题:
关于数组去重复的问题……
本帖最后由 编程学徙 于 2014-5-10 02:25 编辑
[ 本帖最后由 编程学徙 于 2014-5-10 02:21 编辑 ]\n\n以下是代码:
/**
*此程序解决的问题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8};
*思路:把数组中重复的元素赋以int型的最小值,然后用另一个数组来接收不是最小值的数,最后输出;
*步骤:
*1、将数组中的元素与其后的元素一一比较;
*2、如果元素相等,则把该元素赋值为int型的最小值(通常情况下,我们不用到这个值)。
*3、遍历数组,把没有被赋为最小值的数赋给另一个数组;
*4、输出这个数组;
*/
class Chong_Fu
{
public static void main(String[] args)
{
int min = java.lang.Integer.MAX_VALUE;
int [] array = {4,2,4,6,1,2,4,7,8};
int n=array.length; //n用来统计元素被删除后的元素个数;
int i,j;
for(i=0;i<array.length-1;i++)
{
for(j=i+1;j<array.length;j++)
{
if(array[i]==array[j])
{
array[i] = min; //如果有元素与后面的某个元素值相等,则把该元素赋值为最小值,等同与删除这个数;
n--;
continue;
}
}
}
int b[] = new int [n];
n = 0;
for(int a:array)
{
if(a!=min)
{
b[n] = a;
n++;
}
}
for(int boo:b)
{
System.out.print("\t"+boo); //遍历数组b,输出结果;
}
System.out.println();
}
}
复制代码
以下是结果:
有个几小问题请教一下:
去重复.jpg
(61.03 KB, 下载次数: 8)
下载附件
2014-5-10 02:12 上传
1、此程序有个缺点:如果原数组中有某个元素的值为int 型最小值,则无法正常输出,请问如何解决?
2、这个题是我的基础测试题,这种把基础测试题或以后的入学测试题拿到论坛上来讨论的做法,是否有违黑马规则?
作者:
编程学徙
时间:
2014-5-11 03:26
没人理啊……自己顶一下,各位,指点一下呗……
作者:
skill20
时间:
2014-5-11 09:59
/*
需求:去除数组中相同的元素。
分析:把数组中的每一个元素存入集合中,用集合的方法来去除重复的元素。
*/
import java.util.*;
class ArrayTest
{
public static void main(String[] args)
{
int[] arr = {1,3,4,5,3,4};
Object[] it = remove(arr);
print(it);
}
public static Object[] remove(int[] arr)
{
//建立一个集合容器,把数组的元素装集合。
List<Integer> list = new ArrayList<Integer>();
for (int x = 0; x < arr.length ; x++ )
{
if(!list.contains(arr[x]))
list.add(arr[x]);
}
return list.toArray();
}
//打印数组。
public static void print(Object[] arr)
{
System.out.print("[");
for (int x = 0; x < arr.length ; x++ )
{
if(x != arr.length -1 )
System.out.print( arr[x] + ",");
else
System.out.println(arr[x] + "]");
}
}
}
复制代码
作者:
陈培果
时间:
2014-5-11 14:13
import java.util.*;
public class Test5
{
/**
*
* 思路:
* 1、定义一个数组并赋值
* 2、定义一个容器,让数组中的每个元素与这个容器中的元素比较,如果这个元素不存在,
* 则将元素添加进容器,若存在,舍弃。
* 3、使用迭代器遍历打印容器中元素
*/
public static void main(String[] args)
{
//定义一个数组并赋值
int[] arr = new int[]{4,2,4,6,1,2,4,7,8};
//定义一个容器集合
ArrayList<Integer> al = new ArrayList<Integer>();
//将数组中不重复的元素添加进入容器
for (int i = 0; i < arr.length; i++)
{
if (!al.contains(arr[i]))
al.add(arr[i]);
}
Iterator<Integer> it=al.iterator();//定义一个迭代器并打印
sop("{");
for (int i=0;i<al.size()-1 ;i++)
{
sop(it.next()+",");
}
sop(it.next());
sop("}");
}
public static void sop(Object obj )//实现打印功能的小程序,减少代码。
{
System.out.print(obj);
}
}
复制代码
/这是我写的,你看看希望对你有帮助/
作者:
陨落″烟雨。
时间:
2014-5-11 14:20
这个题用集合做好容易的,Set集合存放的元素不能重复,将数组里面的元素存进Set集合里,就可以过滤掉重复的了,想取出来就迭代吧。
这个题还可以变一下,就是取除重复后排序,涉及到排序的话,就用TreeSet集合就可以!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2