- import java.util.*;
- public class GetSingleNumber {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int[] arr={1,2,3,1,3,4,5,6,7,7,8};
- ArrayList<Integer> single=getSingleNumber(getMap(arr));
- System.out.println(single);
- }
- //将数组中的数据和出现次数存入Map集合
- public static Map<Integer,Integer> getMap(int[] arr)
- {
- HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
- int len=arr.length;
- for(int x=0;x<len;x++)
- {
- int count=0;
- Integer value=map.get(arr[x]);//获取该元素的集合中的次数
- if(value!=null)
- count=value;
- count++;
- map.put(arr[x], count);//将元素和对应的出现次数写入集合
- }
- return map;
- }
- public static ArrayList<Integer> getSingleNumber(Map<Integer,Integer> map)
- {
- //将集合的对应关系存入set集合
- Set<Map.Entry<Integer, Integer>> set=map.entrySet();
- //获取Set集合的迭代器对象
- Iterator<Map.Entry<Integer, Integer>> it=set.iterator();
- //定义一个新的集合用来存储出现次数仅为1的元素
- ArrayList<Integer> list=new ArrayList<Integer>();
- while(it.hasNext())
- {
- Map.Entry<Integer, Integer> me=it.next();//迭代获取元素对应关系
- Integer key=me.getKey();//获取对应关系中的键,也就是元素
- Integer value=me.getValue();//获取值,也就是出现的次数
- if(value.equals(1))//如果出现次数为1,将这个元素(键)存入List集合
- {
- list.add(key);
- }
- }
- return list;
-
- }
- }
复制代码 |