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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小川行 中级黑马   /  2015-3-24 09:49  /  1197 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们经常会遇到对数组中元素去重的问题:
我 之前的思考方式就是:遍历整个数组中的元素,在对每个元素进行比较,将没有重复的元素存入到另外一个数组当中,而且也不能确定数组的长度,定义过长,造成资源浪费。这种方式极为不好。
学习集合后,我们知道有些集合是不可以存储重复元素的,比如:HashSet、TreeSet、HashMap等。利用这一点我们就可以将重复的元素去掉。以下是我使用Map集合来去除集合中的重复元素,感觉挺方便的。
  1. public class QuChong {

  2.         public static void main(String[] args) {
  3.                 int[] arr={4,3,4,6,1,3,4,7,8};
  4.                 Map<Integer,Integer> m=new HashMap<Integer, Integer>();
  5.                 ArrayList<Integer> arr1=new ArrayList<Integer>();
  6.                 for (int i = 0; i < arr.length; i++) {
  7.                         int j = arr[i];
  8.                         if(m.get(j)==null){//判断Map集合中是否为null,及判断Map集合中是否存在这个元素
  9.                                 arr1.add(j);//将不重复的数据存入到ArrayList集合当中
  10.                                 m.put( arr[i], 1);//如果Map集合中没有这个元素,则将这个arr[i]作为键,值设置为1存入到Map集合中
  11.                         }       
  12.                 }
  13.                 //以下代码是将ArrayList集合中的数据存到一个新的数组中,并打印
  14.                 int len=arr1.size();
  15.                 int [] arr2=new int[len];       
  16.                 for(int i=0;i<len;i++){
  17.                         arr2[i]=arr1.get(i);
  18.                         System.out.print(arr2[i]+" ");
  19.                 }       
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

2 个回复

倒序浏览
利用已有方法的不重复特点去重是比较简单,但是一个简单的算法用到太多的工具感觉不合适。但是从练习新方法还是挺好的
回复 使用道具 举报
思路很重要
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马