数组转化成map和set的简单实现
将数组转化为Set(不使用Set类)。
思路:1.将数组排序
2.遍历数组,将临近的元素进行比较,如果不相等就加入容器。 (当然这里返回的是一个有序无重的容器没有实现无序)
/** * 将数组去重(不使用Set的情况下) * @param array 被操作数组 * @return 目标Set */ public static List<Integer> intToSet(int[] array){ List<Integer> list = new ArrayList<Integer>(); Arrays.sort(array); list.add(array[0]); for(int i = 0;i<array.length-1;i++){ if(array[i]!=array[i+1]){ list.add(array[i+1]); } } return list; }
将数组转化为Map(key为元素,value为次数)。
因为上面实现了set,我们这里就直接用Set容器。
思路:
1.将数组装入Set,去重。
2.遍历Set,将里面的元素取出计算出出现的次数。
/** * 数组 转成 map形式 * @param array 被操作数组 * @return 目标Map */ public static Map<Integer,Integer> intToMap(int[] array){ Set<Integer> set = new HashSet<Integer>(); Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for(int i = 0;i<array.length;i++){ set.add(array[i]); } Iterator<Integer> it = set.iterator(); while(it.hasNext()){ int next = it.next(); int index = 0; for(int n : array){ if(n==next) index++; } map.put(next, index); System.out.print(next); System.out.println("======"+index); } return map; }