方法一使用借助两个hashset或两个arrylist,或者组合
arrayList1 存放第一次出现的value,arrayList1 存放第二次出现的value。hashset 可以加入value不会重复。赋值一份map1做循环,map判断一致的value进行删除。
package zh.codegym.task.task08.task0817;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
/*
我们不需要重复的内容
*/
public class Solution {
public static HashMap<String, String> createMap() {
//在此编写你的代码
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
map.put("sky"+i,"cxl");
}
return map;
}
public static void removeFirstNameDuplicates(Map<String, String> map) {
//在此编写你的代码
HashMap<String, String> map1 = new HashMap<>(map);
ArrayList<String> arrayList1 = new ArrayList<>();
HashSet<String> arrayList2 = new HashSet<>();
for (Map.Entry<String,String> pair:map1.entrySet()
) {
String value = pair.getValue();
if (arrayList1.contains(value)){
arrayList2.add(value);
}
else {
arrayList1.add(value);
}
}
for (Map.Entry<String,String> pair:map1.entrySet()
) {
String value = pair.getValue();
if (arrayList2.contains(value)){
map.remove(pair.getKey());
}
}
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
HashMap<String, String> copy = new HashMap<String, String>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value)) {
map.remove(pair.getKey());
}
}
}
public static void main(String[] args) {
}
}
方法二删除,调用removeItemFromMapByValue 方法进行删除
package zh.codegym.task.task08.task0817;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
/*
我们不需要重复的内容
*/
public class Solution {
public static HashMap<String, String> createMap() {
//在此编写你的代码
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
map.put("sky"+i,"cxl");
}
return map;
}
public static void removeFirstNameDuplicates(Map<String, String> map) {
//在此编写你的代码
HashMap<String, String> map1 = new HashMap<>(map);
ArrayList<String> arrayList1 = new ArrayList<>();
HashSet<String> arrayList2 = new HashSet<>();
for (Map.Entry<String,String> pair:map1.entrySet()
) {
String value = pair.getValue();
if (arrayList1.contains(value)){
arrayList2.add(value);
}
else {
arrayList1.add(value);
}
}
for (String a:arrayList2
) {
removeItemFromMapByValue(map,a);
}
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
HashMap<String, String> copy = new HashMap<String, String>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value)) {
map.remove(pair.getKey());
}
}
}
public static void main(String[] args) {
}
}
hashmap使用
hashMap() 检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue() 检查 hashMap 中是否存在指定的 value 对应的映射关系。
String city=reader.readLine();
if (map.containsKey(city)) {
String familyName =map.get(city);
System.out.println(familyName);
}