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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有一个数组,假设是{1,2,3,1,3,4,5,6,7,7,8},要求如下:
1. 将重复的去掉
2. 将重复的打印,格式  xxx重复出现了xx次

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

3 个回复

倒序浏览
用集合做比较方便,因为要获取每个元素对应的出现次数,可以在遍历数组的时候把元素和出现的次数的对应关系存入Map集合,然后去除集合中次数不为1的键值关系
回复 使用道具 举报
  1. import java.util.*;

  2. public class GetSingleNumber {

  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.                 int[] arr={1,2,3,1,3,4,5,6,7,7,8};
  6.                 ArrayList<Integer> single=getSingleNumber(getMap(arr));
  7.                 System.out.println(single);
  8.         }
  9.         //将数组中的数据和出现次数存入Map集合
  10.         public static Map<Integer,Integer> getMap(int[] arr)
  11.         {
  12.                 HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
  13.                 int len=arr.length;               
  14.                 for(int x=0;x<len;x++)
  15.                 {
  16.                         int count=0;
  17.                         Integer value=map.get(arr[x]);//获取该元素的集合中的次数
  18.                         if(value!=null)
  19.                                 count=value;
  20.                         count++;
  21.                         map.put(arr[x], count);//将元素和对应的出现次数写入集合
  22.                 }
  23.                 return map;
  24.         }
  25.         public static ArrayList<Integer> getSingleNumber(Map<Integer,Integer> map)
  26.         {
  27.                 //将集合的对应关系存入set集合
  28.                 Set<Map.Entry<Integer, Integer>> set=map.entrySet();
  29.                 //获取Set集合的迭代器对象
  30.                 Iterator<Map.Entry<Integer, Integer>> it=set.iterator();
  31.                 //定义一个新的集合用来存储出现次数仅为1的元素
  32.                 ArrayList<Integer> list=new ArrayList<Integer>();
  33.             while(it.hasNext())
  34.             {
  35.                         Map.Entry<Integer, Integer> me=it.next();//迭代获取元素对应关系
  36.                         Integer key=me.getKey();//获取对应关系中的键,也就是元素
  37.                         Integer value=me.getValue();//获取值,也就是出现的次数
  38.                         if(value.equals(1))//如果出现次数为1,将这个元素(键)存入List集合
  39.                         {
  40.                                 list.add(key);
  41.                         }
  42.             }
  43.                 return list;
  44.                
  45.         }
  46. }
复制代码
回复 使用道具 举报
  1. @Test
  2.         public void test(){
  3.                 int[] arr=new int[]{1,2,3,1,3,4,5,6,7,7,8};
  4.                 Map<Integer, Integer> map=new HashMap<>();
  5.                 for(int i:arr){
  6.                         Integer count = map.get(i);
  7.                         if(count==null)
  8.                                 map.put(i, 1);
  9.                         else
  10.                                 map.put(i, count+1);
  11.                                
  12.                 }
  13.                 for(Entry<Integer, Integer> entry:map.entrySet()){
  14.                         System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
  15.                 }
  16.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马