A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

zhangniuren

初级黑马

  • 黑马币:-12

  • 帖子:6

  • 精华:0

© zhangniuren 初级黑马   /  2015-5-30 15:09  /  821 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组怎么去除重复的数字啊

16 个回复

倒序浏览
存入Set集合,再转换成数组
回复 使用道具 举报
HashSet 与TreeSet应该度可以
回复 使用道具 举报
数组不能删除元素的,先Arrays.asList(数组),然后用集合的方法删除相同的,再toArray()转数组。
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
用集合吧,把数组放入集合中,再用集合转数组
回复 使用道具 举报
mnxnm 中级黑马 2015-5-31 10:05:34
7#
数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4... http://bbs.itheima.com/thread-199960-1-1.html (出处: 黑马程序员IT技术论坛)
回复 使用道具 举报
是啊,这个问题我也觉得好复杂啊!
回复 使用道具 举报
是啊,这个问题我也觉得好复杂啊!
回复 使用道具 举报
用集合可能会简便写吧
回复 使用道具 举报

这代码怎么这么熟悉,连注释都这么熟
回复 使用道具 举报
只有先把数组转成toString型 ,然后用切割,最后再转成数组
回复 使用道具 举报
edithe 发表于 2015-5-31 15:33
这代码怎么这么熟悉,连注释都这么熟

这都被你发现了,:)根据老师讲的写的
回复 使用道具 举报
用集合的话会比较简单,否则向上面那位那样也能做,注意理清楚思路:
首先,数组是定长的,也就是说,你先要判断出有多少个重复的元素,也就是要得到新数组的长度
然后再将不重复的数一个个提取出来,重新存到新的数组中,
就是这样。
回复 使用道具 举报
把数组中所有的元素拿出来存到set里面, set由于不能有重复的元素, 所以所有元素都不是重复的, 然后把这个set转换为数组返回即可
回复 使用道具 举报
方法还是蛮多的
回复 使用道具 举报
楼上正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马