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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gtf 中级黑马   /  2014-7-6 22:07  /  1682 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

倒序浏览
我这个写的不好。你参考一下吧

  1. import java.util.*;

  2. public class Test1 {
  3.         public static void main(String[] args) {
  4.                 // 原数组
  5.                 int[] arr = { 4,2,4,6,1,2,4,7,8 };
  6.                 // 定义一个list集合
  7.                 List al = new ArrayList();
  8.                 // 对数组进行遍历
  9.                 for (Integer a : arr) {
  10.                         // 添加到list集合中
  11.                         al.add(a);
  12.                 }
  13.                 // 打印没有去重的list集合
  14.                 sop("al=" + al);
  15.                 // 打印去重后的list集合
  16.                 List list = quchong(al);
  17.                 sop("newAl=" + list);
  18.                 // 对list集合进行迭代
  19.                 Iterator it = list.iterator();
  20.                 System.out.print("去重后的数组=" + "{");
  21.                 for (int i = 0; i < list.size(); i++) {
  22.                         if (i != list.size() - 1)
  23.                                 System.out.print(it.next() + ",");
  24.                         else
  25.                                 System.out.println(it.next() + "}");
  26.                 }
  27.         }

  28.         public static List quchong(List al) {
  29.                 // 定义一个临时的list集合,存储去重后的list集合
  30.                 List newAl = new ArrayList();
  31.                 // 迭代
  32.                 Iterator it = al.iterator();
  33.                 while (it.hasNext()) {
  34.                         Object obj = it.next();
  35.                         if (!newAl.contains(obj))
  36.                                 newAl.add(obj);
  37.                 }
  38.                 return newAl;
  39.         }

  40.         public static void sop(Object obj) {
  41.                 System.out.println(obj);
  42.         }
  43. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
我会告诉你我基础测试也有这题吗?

  1. package com.itheima;

  2. public class Test5 {

  3.         /**
  4.          * 5、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  5.          * @author QWY
  6.          */
  7.         /*
  8.                  思路:
  9.                          定义一个新的数组,每添加一个元素前先判断是否存在
  10.          */
  11.         public static void main(String[] args) {
  12.                 // 定义两个整型数组,src为原数组,res为消去重复后的数组
  13.                 int[] src = {4,2,4,6,1,2,4,7,8}, res;
  14.                 // len为原数组的长度,count为消去重复后的数组的长度
  15.                 int len = src.length, i = 0, j = 0, count = 1;
  16.                 res = new int[len];
  17.                 // 将原数组第一个元素放到res中
  18.                 res[0] = src[0];
  19.                 for(i = 1;i < len;i++){
  20.                         // 定义一个标志,用来判断当前元素是否已存在
  21.                         boolean flag = true;
  22.                         for(j = 0;j < count;j++){
  23.                                 // 若当前元素存在则置flag为false并跳出本次循环
  24.                                 if(src[i] == src[j]){
  25.                                         flag = false;
  26.                                         break;
  27.                                 }
  28.                         }
  29.                         // 如果当前元素不存在则加入到res中
  30.                         if(flag)
  31.                                 res[count++] = src[i];
  32.                 }
  33.                 // 打印出消除重复元素后的数组
  34.                 for(i = 0;i < count;i++)
  35.                         System.out.print(" "+res[i]);
  36.         }

  37. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 790324255a 于 2014-7-6 23:08 编辑

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class Test1 {
        public static void main(String[] args) {
                /**
                 * 5、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
                 *
                 * @author QWY
                 */
                int[] arr = { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
                List<Integer> list = new ArrayList<Integer>();
                for (int i : arr) {
                        list.add(i);
                }
                Set<Integer> set = new LinkedHashSet<Integer>(list);
                int[] sort = new int[set.size()];
                int j = 0;
                for (int i : set) {
                        sort[j] = i;
                        j++;
                }
                for (int y = 0; y < sort.length; y++) {
                        if (y == 0)
                                sop("{" + sort[y] + ",");
                        else if (y == sort.length - 1)
                                sop(sort[y] + "}");
                        else
                                sop(sort[y] + ",");
                }
        }

        public static void sop(Object o) {
                System.out.print(o);
        }
}
我是这样解决的 利用list集合可存在重复元素 set集合不允许存在重复元素 用list跟set集合间的转换来排除重复元素
回复 使用道具 举报
毅心缘 发表于 2014-7-6 22:15
我这个写的不好。你参考一下吧

太感谢了  辛苦了     
回复 使用道具 举报
  1. public class quchong {
  2.         public static void main(String[] args) {
  3.                 int arr[]={4,2,4,6,1,2,4,7,8};
  4.                 Set set =new HashSet();
  5.                 for(int i=0;i<arr.length;i++){
  6.                         if(!set.contains(arr[i])){
  7.                                 set.add(arr[i]);
  8.                         }
  9.                 }
  10.                 System.out.println(set);
  11.         }
  12. }
复制代码

打印结果:[1, 2, 4, 6, 7, 8]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马