简单介绍:
Map是一个键值对集合,存储键、值之间的映射。key无序且唯一,value不要求顺序,允许重复。
基于Map中key的特性,我们可以将其用作我们进行去重操作的一个重要手段。我们在进行数组去重过程中常用Map中的实现类HashMap。
HashMap:
- 基于Hash表实现, HashMap的值也是没有顺序的, 根据key获取
到value, 具有O(1)的查找时间复杂度。- HashMap允许键值对值为null,但是最多只允许一条记录key的值为null(多条会覆盖),允许多条记录的value为null。
- HashMap是线程不安全的
具体代码实现如下:
//map去重(整型数组)
//此处采用key=data[i],value=data[i]的形式
//也可以自己设置value值
public static void quChong(int[] data) {
Map<Integer, Integer> map = new HashMap<>();
for(Integer i:data) {
map.put(i,i);
}
//打印key
System.out.println(map.keySet());
//打印value
System.out.println(map.values());
//打印key + value
for(Integer key:map.keySet()){
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//去重后的map转成数组并输出
int[] temp=new int[map.size()];
int i=0;
for(Integer key:map.keySet()) {
temp[i]=map.get(key);
i++;
}
for(int j=0;j<temp.length;j++) {
System.out.print(temp[j] + " ");
}
System.out.println(" ");
若要进行字符型数组去重,做法类似:
//map去重(字符型数组)
public static void quChong(String[] arrStr) {
Map<String, Object> map = new HashMap<>();
for (String str : arrStr) {
map.put(str, str);
}
System.out.println(map.keySet());
}