有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数据结构如何知道Java中同一映射中是否有两个相同的元素

我用嵌套地图

Map<String,Map<String,List<String>>> scheduleMap = new HashMap<>();

我在地图上放了三个元素,studentIdsubjectmajor

作为输入示例

    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) 个答案

  1. # 1 楼答案

    Map通常不支持使用同一个键设置两个键值。每把钥匙都必须是独一无二的。 Refer to this.