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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pengwei1989 中级黑马   /  2015-9-19 09:39  /  699 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么把数组中重复的元素去掉,打印剩下的元素。

14 个回复

倒序浏览
这个问题看到很多遍了,思路就是把数组的元素一个一个取出来存到另一个数组里。只要在存的时候判断是否存在即可!
回复 使用道具 举报
使用set集合!!!
回复 使用道具 举报
  1. package com.itheima;

  2. import java.util.ArrayList;
  3. import java.util.HashSet;

  4. /*
  5. * 第七题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  6. */
  7. public class Test7 {
  8.         public static void main(String[] args) {
  9.                 // 原始数组
  10.                 int[] array = new int[] { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
  11.                
  12.                
  13.                 HashSet<Integer> set = new HashSet<>(); // 保存出现过的原素
  14.                 ArrayList<Integer> result = new ArrayList<>(); // 保存去重后的结果

  15.                 for (int i = 0; i < array.length; ++i) {
  16.                         // 如果array[i]没有出现过,就添加到set并保存到结果中
  17.                         if (!set.contains(array[i])) {
  18.                                 result.add(array[i]);
  19.                                 set.add(array[i]);
  20.                         }
  21.                 }
  22.                
  23.                 // 打印结果
  24.                 System.out.println(result);

  25.         }
  26. }
复制代码
回复 使用道具 举报
YC匪帮 发表于 2015-9-19 10:29
使用set集合!!!

还没看到这一块,有基础的点方法吗?
回复 使用道具 举报 1 0

我才看到面向对象这一块,有没有比你这低级一点的方法。。。。。。
回复 使用道具 举报 1 0
我也刚看,java不知道有没有去重方法啊
回复 使用道具 举报
    如果还没学到集合的话可以使用另外一个数组,然后将原数组的中的元素存过去,在每一次存的过程中,都与新数组里面的每一个元素进行比较,如果不相同就存进去。但是长度不好确定。
    StringBuilder如果学到了的话也可以使用StringBuilder,然后使用indexOf 的方法,如果返回-1就存进去,但每存一次都要再存一个,(逗号),到最后一个就不用存逗号了,接着使用toString方法返回里面的内容字符串,利用String类里面的split方法返回一个String类型的数组,接着就看需求了,如果是int型就用Integer.parseInt()再转呗。
     但这些都不太好用,还是集合好用一些。使用LinkedHashSet,会自动过滤掉相同元素,并且会按存入顺序返回。

回复 使用道具 举报 1 0
pengwei1989 发表于 2015-9-19 11:30
我才看到面向对象这一块,有没有比你这低级一点的方法。。。。。。

如果让你去打仗,AK47和小米加步枪你会选择那种武器?
当然是AK47,不会用就学呗,不学啥时候都不会用。

Java提供集合类库,就是为了方便实现编码的。
回复 使用道具 举报
set存储的元素是不重复的 直接放到set里就行了
import java.util.HashSet;


public class quChong {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[] a = {3,4,6,7,8,8,2,3,4};
                HashSet<Integer> hs = new HashSet<Integer>();
               
                for(int i=0;i<a.length;i++){
                       
                        hs.add(a[i]);
                       
                       
                }
                System.out.println(hs);
        }

}
回复 使用道具 举报 1 0
还没看到集合,表示,看不懂啊
回复 使用道具 举报
我顶......
回复 使用道具 举报
哥们飘过,呵呵
回复 使用道具 举报
我觉的这个方法你应该能理解
  1. class Temp {
  2.         public static void main(String[] args) {
  3.                 // 旧数组
  4.                 int[] arrOld = { 1, 2, 4, 5, 6, 2, 3, 2 };
  5.                 // 新建一个数组用于装不重复的元素
  6.                 int[] arrNew = new int[arrOld.length];
  7.                 int j = 0;
  8.                 // 逐个复制元素到新数组,如果元素已经存在则不复制
  9.                 for (int i = 0; i < arrOld.length; i++) {
  10.                         if (isContain(arrOld[i], arrNew)) {// 判断是否已经有次元素
  11.                                 continue;
  12.                         }
  13.                         arrNew[j] = arrOld[i];
  14.                         j++;//同时记录数组中不重复的个数
  15.                 }
  16.                 printArr(arrOld);
  17.                 System.out.println("去重后的数组:");
  18.                 for(int i = 0; i < j ; i++)
  19.                         System.out.print(arrNew[i]+" ");
  20.         }

  21.         private static void printArr(int[] arr) {// 打印数组
  22.                 for (int i : arr) {
  23.                         System.out.print(i + " ");
  24.                 }
  25.                 System.out.println();
  26.         }

  27.         private static boolean isContain(int i, int[] arrNew) {
  28.                 //遍历数组看是否已经含有此元素
  29.                 for (int j = 0; j < arrNew.length; j++) {
  30.                         if(i == arrNew[j]){
  31.                                 return true;
  32.                         }
  33.                 }
  34.                 return false;
  35.         }
  36. }[code]运行结果
  37. 1 2 4 5 6 2 3 2
  38. 去重后的数组:
  39. 1 2 4 5 6 3
复制代码
[/code]
回复 使用道具 举报
数组中可以有重复的元素啊?我都不知道,基础太不牢了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马