如何知道Java中同一个映射中是否存在两个相同的元素

时间:2017-11-13 08:44:12

标签: java data-structures computer-science

我使用嵌套地图,

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,3060000002和30600003,如果在密钥中存储了两个相同的专业,则应该增加计数。

例如,如示例所示,30600001有两个&#34; IT&#34;和两个&#34; ElecEng&#34;每个都是其主要元素。所以计数应该等于2.

对于studentId,30600002,它有两个&#34; IT&#34;但只有一个&#34; ElecEng&#34;作为其主要元素,因此计数应为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 个答案:

答案 0 :(得分:4)

Map一般不支持使用相同键设置两个键值。每个密钥必须是唯一的。 Refer to this.