package test01;
import test.User;
import java.util.*;
/**
* 把Map集合中value值相同的Key取出来
*/
public class Map {
public static void main(String[] args) {
User user=new User();
Map<String, Object> Test = new HashMap<>();
Test.put("玩家1", user);
Test.put("玩家2", "匹配实体1");
Test.put("玩家3", user);
Test.put("玩家4", "匹配实体1");
Test.put("玩家5", "匹配实体3");
Test.put("玩家6", user);
Test.put("玩家7", "匹配实体1");
Test.put("玩家8", "匹配实体3");
Test.put("玩家9", user);
Test.put("玩家10", "匹配实体1");
Test.put("玩家11", "匹配实体3");
Test.put("玩家12", user);
Map<Object, List<String>> send = new HashMap<Object, List<String>>();
long t0 = System.currentTimeMillis();//获取计算机当前时间
for (String key:Test.keySet()){
Object value =Test.get(key);//获取value
if (send.containsKey(value)) { //send有相同的值时
List<String> list = send.get(value);
list.add(key); //list增加当前规则的玩家
} else { //send没有相同的值时 new 一个新的
List<String> list = new ArrayList<String>();
list.add(key);
send.put(value, list); //将规则设为key值
}
}
System.out.println("send的数据为:" + send.toString());
long t1 = System.currentTimeMillis();//获取计算机当前时间
System.out.println("总共耗时:"+(t1-t0)+"ms");
}
}
输出结果为:
send的数据为:{匹配实体1=[玩家7, 玩家10, 玩家2, 玩家4], 匹配实体3=[玩家5, 玩家8, 玩家11], test.User@1b6d3586=[玩家9, 玩家6, 玩家12, 玩家1, 玩家3]}
总共耗时:3ms
Process finished with exit code 0
希望能帮到大家