数据结构如何知道Java中同一映射中是否有两个相同的元素
我用嵌套地图
Map<String,Map<String,List<String>>> scheduleMap = new HashMap<>();
我在地图上放了三个元素,studentId
,subject
,major
作为输入示例
scheduleMap1.add("30600001", "INFO1105", "IT");
scheduleMap1.add("30600001", "ELEC1603", "ElecEng");
scheduleMap1.add("30600002", "INFO1103", "IT");
scheduleMap1.add("30600003", "INFO1003", "IT");
scheduleMap1.add("30600001", "ELEC1601", "ElecEng");
scheduleMap1.add("30600002", "INFO1003", "IT");
scheduleMap1.add("30600002", "ELEC1603", "ElecEng");
scheduleMap1.add("30600001", "INFO1003", "IT");
都放在地图上了
最终目的是,对于每个学生id 30600001、30600002和30600003,如果键中存储了两个相同的专业,则应增加计数
例如,如示例所示,30600001有两个“IT”和两个“ElecEng”分别作为其主要元素。所以计数应该等于2
对于studentId 30600002,它有两个“it”,但只有一个“ElecEng”作为主要元素,所以计数应该是1
我可以通过这样的编码来实现我的目标:
for(Entry<String, Map<String, List<String>>> studentId : scheduleMap.entrySet()) {
for(Entry<String, List<String>> subject : studentId.getValue().entrySet())
{
for(String major : subject.getValue())
{
if(major.contains("IT"))
{
it++;
} else if(major.contains("ElecEng")) {
elec++;
}
if(it >= 2 || elec >= 2)
{
count++;
}
}
然而,有没有办法通过不指出像major.contains("IT")
和major.contains("ElecEng")
这样的发现来获得计数
我真的想通过这样做来增加计数
if(everytime key.subject.major has two identical elements)
{
count++;
}
任何帮助都会很好。谢谢
# 1 楼答案
Map通常不支持使用同一个键设置两个键值。每把钥匙都必须是独一无二的。 Refer to this.