我使用嵌套地图,
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,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++;
}
任何帮助都会很棒。谢谢!