Java 匹配机制:根据角色和成绩进行匹配并删除
Java 匹配机制:根据角色和成绩进行匹配并删除
本文介绍一种 Java 匹配机制,该机制根据角色和成绩进行匹配,并满足以下要求:
- 相同的成绩进行匹配。
- 相同的角色不能进行匹配。
- 根据角色匹配其它的角色。
- 两个角色属性匹配的次数有限制,例如 role1 和 role2 只能匹配成功 3 次,并且删除匹配成功后的数据。
- 集合中根据角色属性条数最多的优先匹配。
- 匹配成功一条,从 list 中删除一条。
- 将匹配成功后的数据以
<role1, role2>数据格式存储。
代码实现
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MatchMechanism {
public static void main(String[] args) {
List<AA> aa = new ArrayList<>();
aa.add(new AA("role1", 80));
aa.add(new AA("role2", 90));
aa.add(new AA("role1", 70));
aa.add(new AA("role2", 85));
aa.add(new AA("role3", 80));
aa.add(new AA("role3", 75));
Map<String, Integer> roleCount = new HashMap<>();
Map<String, String> matches = new HashMap<>();
for (AA a : aa) {
String role = a.role;
int grade = a.grade;
// 检查是否有匹配的角色
if (matches.containsKey(role)) {
String matchedRole = matches.get(role);
System.out.println(role + " matched with " + matchedRole);
matches.remove(role);
// 更新匹配次数限制
roleCount.put(role, roleCount.get(role) - 1);
roleCount.put(matchedRole, roleCount.get(matchedRole) - 1);
// 从列表中删除匹配成功的数据
aa.removeIf(aaItem -> aaItem.role.equals(role) || aaItem.role.equals(matchedRole));
continue;
}
// 检查是否有相同的成绩进行匹配
for (AA b : aa) {
if (b != a && b.grade == grade && !b.role.equals(role)) {
// 检查匹配次数限制
if (roleCount.getOrDefault(role, 0) < 3 && roleCount.getOrDefault(b.role, 0) < 3) {
System.out.println(role + " matched with " + b.role);
matches.put(role, b.role);
// 更新匹配次数限制
roleCount.put(role, roleCount.getOrDefault(role, 0) + 1);
roleCount.put(b.role, roleCount.getOrDefault(b.role, 0) + 1);
// 从列表中删除匹配成功的数据
aa.remove(a);
aa.remove(b);
break;
}
}
}
}
// 打印匹配结果
for (Map.Entry<String, String> entry : matches.entrySet()) {
System.out.println("<" + entry.getKey() + ", " + entry.getValue() + ">");
}
}
}
class AA {
public String role;
public int grade;
public AA(String role, int grade) {
this.role = role;
this.grade = grade;
}
}
代码说明
- 代码中使用了两个 Map:
roleCount用于记录每个角色的匹配次数,matches用于存储匹配成功的角色对。 - 遍历列表时,首先检查是否有与当前角色匹配的角色,如果有,则进行匹配并更新匹配次数限制。
- 如果没有匹配的角色,则检查是否有相同成绩的角色进行匹配,并且满足匹配次数限制。
- 匹配成功后,将匹配成功的角色对存储在
matches中,并从列表中删除匹配成功的数据。 - 最后,打印匹配结果。
总结
本文介绍了一种 Java 匹配机制,该机制根据角色和成绩进行匹配,并满足一些特定的要求。该机制可以应用于各种场景,例如根据用户角色和喜好进行推荐等。
原文地址: https://www.cveoy.top/t/topic/eU6 著作权归作者所有。请勿转载和采集!