黑马程序员技术交流社区

标题: 数组怎么去除重复的数字啊 [打印本页]

作者: zhangniuren    时间: 2015-5-30 15:09
标题: 数组怎么去除重复的数字啊
数组怎么去除重复的数字啊
作者: nbcallum    时间: 2015-5-30 15:19
存入Set集合,再转换成数组
作者: guojiadui    时间: 2015-5-30 16:09
HashSet 与TreeSet应该度可以
作者: csu050416    时间: 2015-5-30 16:48
数组不能删除元素的,先Arrays.asList(数组),然后用集合的方法删除相同的,再toArray()转数组。
作者: bin2015    时间: 2015-5-30 17:06
  1. class Demo9
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[]  oldArr =  {1,4,9,4,1,1,7};
  6.                 int[] newArr = clearRepeat(oldArr);
  7.                 System.out.println("清除重复元素的数组:"+ Arrays.toString(newArr));
  8.         }


  9.         public static int[] clearRepeat(int[] oldArr){
  10.                 int count = 0 ; //count变量 是用于记录重复元素的个数

  11.                 //计算出重复元素的个数
  12.                 for(int i  = 0 ; i<oldArr.length -1  ; i++ ){
  13.                         for(int j = i+1 ; j<oldArr.length ; j++){
  14.                                 if(oldArr[i]==oldArr[j]){
  15.                                         count++;
  16.                                         break;
  17.                                 }
  18.                         }
  19.                 }
  20.                
  21.                 //创建一个新的数组
  22.                 int[] newArr = new int[oldArr.length-count];
  23.                
  24.                
  25.                 int index = 0;        //新数组使用的索引值。

  26.                 //遍历旧数组
  27.                 for(int i = 0 ; i<oldArr.length ; i++){
  28.                         boolean flag = false; //该标识是用于标识取出的元素是否存在新数组中。 false默认情况是不存在 的。

  29.                         int temp = oldArr[i];        //从旧数组 中取出遍历的元素
  30.                         //遍历新的数组是否存在该数据
  31.                         for(int j = 0 ; j<newArr.length ; j++){
  32.                                 if(newArr[j]==temp){
  33.                                         flag = true;
  34.                                         break;
  35.                                 }       
  36.                         }

  37.                         //该元素不存在新数组中,这时候应该存储起来
  38.                         if(flag==false){
  39.                                 newArr[index++] = temp;
  40.                         }
  41.                 }

  42.                 return newArr;
  43.         }
  44. }
复制代码

作者: zhousuo28    时间: 2015-5-30 21:07
用集合吧,把数组放入集合中,再用集合转数组
作者: mnxnm    时间: 2015-5-31 10:05
数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4... http://bbs.itheima.com/thread-199960-1-1.html (出处: 黑马程序员IT技术论坛)
作者: kmlitheima    时间: 2015-5-31 10:10
是啊,这个问题我也觉得好复杂啊!
作者: kmlitheima    时间: 2015-5-31 10:13
是啊,这个问题我也觉得好复杂啊!
作者: richaled    时间: 2015-5-31 11:47
用集合可能会简便写吧
作者: edithe    时间: 2015-5-31 15:33
bin2015 发表于 2015-5-30 17:06

这代码怎么这么熟悉,连注释都这么熟
作者: zlynnb2015    时间: 2015-5-31 17:19
只有先把数组转成toString型 ,然后用切割,最后再转成数组
作者: bin2015    时间: 2015-5-31 18:27
edithe 发表于 2015-5-31 15:33
这代码怎么这么熟悉,连注释都这么熟

这都被你发现了,:)根据老师讲的写的
作者: 龙腾浩少    时间: 2015-5-31 20:17
用集合的话会比较简单,否则向上面那位那样也能做,注意理清楚思路:
首先,数组是定长的,也就是说,你先要判断出有多少个重复的元素,也就是要得到新数组的长度
然后再将不重复的数一个个提取出来,重新存到新的数组中,
就是这样。
作者: fantasymaker    时间: 2015-5-31 21:36
把数组中所有的元素拿出来存到set里面, set由于不能有重复的元素, 所以所有元素都不是重复的, 然后把这个set转换为数组返回即可
作者: zhangjnia    时间: 2015-5-31 21:37
方法还是蛮多的
作者: 守株人    时间: 2015-5-31 21:37
楼上正解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2