gpt4 book ai didi

java - 使用字符串和列表作为参数迭代 HashMap

转载 作者:行者123 更新时间:2023-12-02 06:04:43 24 4
gpt4 key购买 nike

我有一个场景,我必须循环遍历 HashMap 来检查空值并生成一个空 bean。空 bean 将再次添加到新映射中。

for (String course_date : shiftSet) {
Bean courseBean = null;
boolean valueExists = false;

for (Entry<String, List<Bean>> entry: courseMap.entrySet()){

String studentDetail = entry.getKey();
String [] studentSet = StringUtils.getArray(studentDetail , ",");
String studentId = studentSet[0];
String courseId = studentSet[1];

for(Bean resultBean : entry.getValue()){

if(course_date.equalsIgnoreCase(resultBean.getCourseDate()){
valueExists = true;
}
}
if(!valueExists ) {
courseBean = new Bean();
courseBean.setStudent(studentId);
courseBean.setCourse(courseId);
List<Bean> courseList = entry.getValue();
courseList.add(courseBean);
outputMap.put(studentId+courseId, courseList);
}
}
}

即使不满足内循环条件, boolean 值也始终为 true。

任何人都可以提出更好的解决方案来实现所需的输出吗?

提前致谢

最佳答案

主要问题是您的 valueExists 变量在每次验证都需要的 for 循环之前初始化。将其重写为:

//declare it here (regardless this "initial" value)
boolean valueExists = false;
for (Entry<String, List<Bean>> entry: courseMap.entrySet()) {
//initialize it here
valueExists = false;
//...
for (Bean resultBean : entry.getValue()) {
if(course_date.equalsIgnoreCase(resultBean.getCourseDate()){
valueExists = true;
//also, add a break here since you already found the value
//you don't need to keep iterating through the rest of items
break;
}
}
if (valueExists) {
//...
}
}

关于java - 使用字符串和列表作为参数迭代 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22395654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com