package code26;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
/**
* 需求:map中有{张三=3,李四=7,王五=9,刘六=5,田四=7,周七=3}这些元素,定义一个list,
将map中value值相同的元素从该map集合中去掉,将剩余的元素中的姓名存入到该list中然后打印到控制台上
*/
public class MapDemo {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("张三", 3);
map.put("李四", 7);
map.put("王五", 9);
map.put("赵六", 5);
map.put("田四", 7);
map.put("周七", 3);
//定义一个map集合用于反向存储键值对
HashMap<Integer,String> newMap = new HashMap<Integer,String>();
//获取map集合的键Set集合
Set<String> key = map.keySet();
//定义一个数组用于存储map集合的值
int[] in = new int[key.size()];
int index = -1;
for (String name : key) {
in[++index] = map.get(name);
newMap.put(map.get(name), name);
}
for (int i : in) {
System.out.println(i+" ");
}
System.out.println("----------");
Set<Entry<Integer, String>> entrySet = newMap.entrySet();
for (Entry<Integer, String> entry : entrySet) {
System.out.println(entry);
}
System.out.println("----------");
//去除数组中的重复元素,判定相同的元素值变为-1标记
ArrayList<Integer> arr = new ArrayList<Integer>();
for (int i = 0; i < in.length-1; i++) {
for (int j = i+1; j < in.length; j++) {
if (in[i]==in[j]) {
in[i]=-1;
in[j]=-1;
}
}
}
//获取不是-1的元素,这些元素就是原数组不重复的元素
for (int i = 0; i < in.length; i++) {
if (in[i]!=-1) {
arr.add(in[i]);
}
}
//获取不重复数值对应的值并存储到一个list集合中
ArrayList<String> result = new ArrayList<String>();
for (int j = 0; j < arr.size(); j++) {
int number = (int)arr.get(j);
result.add(newMap.get(number));
}
//遍历输出这个集合
for (String string : result) {
System.out.println(string);
}
}
}
|
|