Java 我正在更改对象的一部分,但它会在不考虑条件集的情况下不断更改列表中的所有对象
我正在尝试将每个课程组的每个星期一的第1个周期设置为true,但对象会更改所有天,而不仅仅是星期一。请检查下面的示例Java 我正在更改对象的一部分,但它会在不考虑条件集的情况下不断更改列表中的所有对象,java,arrays,arraylist,lambda,Java,Arrays,Arraylist,Lambda,我正在尝试将每个课程组的每个星期一的第1个周期设置为true,但对象会更改所有天,而不仅仅是星期一。请检查下面的示例 import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; class HelloWorld { public static void main(String[] args) { SchoolObje
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
class HelloWorld {
public static void main(String[] args) {
SchoolObject schoolObject;
List<LecturePeriod> lecturePeriods = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
String periodName = "Period " + i;
int periodNo = i;
boolean isPeriodAllocated = false;
lecturePeriods.add(new LecturePeriod(periodName, periodNo, isPeriodAllocated));
}
List<Day> days = new ArrayList<>();
for (int i = 1; i <= 5; i++) {
String dayName;
switch (i) {
case 1:
dayName = "MONDAY";
break;
case 2:
dayName = "TUESDAY";
break;
case 3:
dayName = "WEDNESDAY";
break;
case 4:
dayName = "THURSDAY";
break;
case 5:
dayName = "FRIDAY";
break;
default:
dayName = "NONE";
}
int dayNo = i;
days.add(new Day(dayName, dayNo, lecturePeriods));
}
List<YearGroup> yearGroups = new ArrayList<>();
for (int i = 1; i <= 3; i++) {
int yearGroupNumber = i;
if (Objects.equals(i, 1)) {
yearGroups.add(new YearGroup(yearGroupNumber, new ArrayList<>(Arrays.asList(new CourseGroup("Science" + 1, days)))));
} else if (Objects.equals(i, 2)) {
yearGroups.add(new YearGroup(yearGroupNumber, new ArrayList<>(Arrays.asList(new CourseGroup("Science" + 2, days)))));
} else if (Objects.equals(i, 3)) {
yearGroups.add(new YearGroup(yearGroupNumber, new ArrayList<>(Arrays.asList(new CourseGroup("Science" + 3, days)))));
}
}
schoolObject = new SchoolObject();
schoolObject.setYearGroups(yearGroups);
System.out.println("School Object Before Changing Periods="+schoolObject.toString());
schoolObject.getYearGroups().forEach(yearGroup -> {
yearGroup.getCourseGroups().forEach(courseGroup -> {
courseGroup.getDays().forEach(day -> {
String dayName = day.getDayName();
if (Objects.equals(dayName, "MONDAY")) {
day.getLecturePeriods().forEach(lecturePeriod -> {
int lecturePeriodNumber = lecturePeriod.getPeriodNumber();
if (Objects.equals(lecturePeriodNumber, 1)) {
lecturePeriod.setIsPeriodAllocated(true);
}
});
}
});
});
});
System.out.println("\nSchool Object After Changing Periods=" + schoolObject.toString());
final int[] numberOfAllocatedPeriodsExpected = {0};
schoolObject.getYearGroups().forEach(yearGroup -> {
yearGroup.getCourseGroups().forEach(courseGroup -> {
courseGroup.getDays().forEach(day -> {
day.getLecturePeriods().forEach(lecturePeriod -> {
int lecturePeriodNumber = lecturePeriod.getPeriodNumber();
if (Objects.equals(lecturePeriodNumber, 1)) {
numberOfAllocatedPeriodsExpected[0]++;
}
});
});
});
});
System.out.println("\nTest result ="+Objects.equals(numberOfAllocatedPeriodsExpected[0],3));
}
public static class SchoolObject {
List<YearGroup> yearGroups;
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("SchoolObject{");
sb.append("yearGroups=").append(yearGroups);
sb.append('}');
return sb.toString();
}
public List<YearGroup> getYearGroups() {
return yearGroups;
}
public void setYearGroups(List<YearGroup> yearGroups) {
this.yearGroups = yearGroups;
}
}
public static class YearGroup {
int yearGroupNumber;
List<CourseGroup> courseGroups;
public YearGroup(int yearGroupNumber, List<CourseGroup> courseGroups) {
this.yearGroupNumber = yearGroupNumber;
this.courseGroups = courseGroups;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("YearGroup{");
sb.append("yearGroupNumber=").append(yearGroupNumber);
sb.append(", courseGroups=").append(courseGroups);
sb.append('}');
return sb.toString();
}
public int getYearGroupNumber() {
return yearGroupNumber;
}
public void setYearGroupNumber(int yearGroupNumber) {
this.yearGroupNumber = yearGroupNumber;
}
public List<CourseGroup> getCourseGroups() {
return courseGroups;
}
public void setCourseGroups(List<CourseGroup> courseGroups) {
this.courseGroups = courseGroups;
}
}
public static class CourseGroup {
String courseGroupName;
List<Day> days;
public CourseGroup(String courseGroupName, List<Day> days) {
this.courseGroupName = courseGroupName;
this.days = days;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("CourseGroup{");
sb.append("courseGroupName='").append(courseGroupName).append('\'');
sb.append(", days=").append(days);
sb.append('}');
return sb.toString();
}
public List<Day> getDays() {
return days;
}
public void setDays(List<Day> days) {
this.days = days;
}
public String getCourseGroupName() {
return courseGroupName;
}
public void setCourseGroupName(String courseGroupName) {
this.courseGroupName = courseGroupName;
}
}
public static class Day {
String dayName;
int dayNo;
List<LecturePeriod> lecturePeriods;
public Day(String dayName, int dayNo, List<LecturePeriod> lecturePeriods) {
this.dayName = dayName;
this.lecturePeriods = lecturePeriods;
this.dayNo = dayNo;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Day{");
sb.append("dayName='").append(dayName).append('\'');
sb.append(", dayNo=").append(dayNo);
sb.append(", lecturePeriods=").append(lecturePeriods);
sb.append('}');
return sb.toString();
}
public String getDayName() {
return dayName;
}
public void setDayName(String dayName) {
this.dayName = dayName;
}
public int getDayNo() {
return dayNo;
}
public void setDayNo(int dayNo) {
this.dayNo = dayNo;
}
public List<LecturePeriod> getLecturePeriods() {
return lecturePeriods;
}
public void setLecturePeriods(List<LecturePeriod> lecturePeriods) {
this.lecturePeriods = lecturePeriods;
}
}
public static class LecturePeriod {
String periodName;
int periodNumber;
boolean isPeriodAllocated;
public LecturePeriod(String periodName, int periodNumber, boolean isPeriodAllocated) {
this.periodName = periodName;
this.periodNumber = periodNumber;
this.isPeriodAllocated = isPeriodAllocated;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("LecturePeriod{");
sb.append("periodName='").append(periodName).append('\'');
sb.append(", periodNumber=").append(periodNumber);
sb.append(", isPeriodAllocated=").append(isPeriodAllocated);
sb.append('}');
return sb.toString();
}
public String getPeriodName() {
return periodName;
}
public void setPeriodName(String periodName) {
this.periodName = periodName;
}
public int getPeriodNumber() {
return periodNumber;
}
public void setPeriodNumber(int periodNumber) {
this.periodNumber = periodNumber;
}
public boolean isPeriodAllocated() {
return isPeriodAllocated;
}
public void setIsPeriodAllocated(boolean isPeriodAllocated) {
this.isPeriodAllocated = isPeriodAllocated;
}
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.Objects;
类HelloWorld{
公共静态void main(字符串[]args){
学校对象学校对象;
List讲师时段=新建ArrayList();
对于(int i=1;i{
字符串dayName=day.getDayName();
if(Objects.equals(dayName,“星期一”)){
day.get讲师周期().forEach(讲师周期->{
int-讲师PeriodNumber=讲师Period.getPeriodNumber();
if(Objects.equals(讲师周期编号,1)){
讲师周期设置周期(true);
}
});
}
});
});
});
System.out.println(“\n更改句点后的学校对象=“+schoolObject.toString()”);
final int[]numberOfAllocatedPeriodsExpected={0};
schoolObject.getYearGroups().forEach(yearGroup->{
yearGroup.getCourseGroups().forEach(courseGroup->{
courseGroup.getDays().forEach(天->{
day.get讲师周期().forEach(讲师周期->{
int-讲师PeriodNumber=讲师Period.getPeriodNumber();
if(Objects.equals(讲师周期编号,1)){
预期的分配周期数[0]+;
}
});
});
});
});
System.out.println(“\nTest result=“+Objects.equals(numberOfAllocatedPeriodsExpected[0],3));
}
公共静态类对象{
列出年份组;
@凌驾
公共字符串toString(){
最终StringBuilder sb=新StringBuilder(“学校对象{”);
sb.append(“yearGroups=”).append(yearGroups);
某人附加('}');
使某人返回字符串();
}
公共列表getYearGroups(){
返回组;
}
public void setYearGroups(列出yearGroups){
this.yearGroups=yearGroups;
}
}
公共静态类年组{
int yearGroupNumber;
列出课程组;
公共年组(国际年组编号,列出课程组){
this.yearGroupNumber=yearGroupNumber;
this.courseGroups=courseGroups;
}
@凌驾
公共字符串toString(){
最终StringBuilder sb=新StringBuilder(“年度组{”);
sb.append(“yearGroupNumber=”).append(yearGroupNumber);
sb.append(“,courseGroups=”).append(courseGroups);
某人附加('}');
使某人返回字符串();
}
public int getYearGroupNumber(){
返回yearGroupNumber;
}
public void setYearGroupNumber(int yearGroupNumber){
this.yearGroupNumber=yearGroupNumber;
}
公共列表getCourseGroups(){
返回课程组;
}
公共无效设置课程组(列出课程组){
this.courseGroups=courseGroups;
}
}
公共静态类课程组{
字符串courseGroupName;
列出日期;
公共课程组(字符串课程组名称,列表天数){
this.courseGroupName=courseGroupName;
这个.天=天;
}
@凌驾
公共字符串toString(){
最终StringBuilder sb=新StringBuilder(“课程组{”);
sb.append(“courseGroupName=”).append(courseGroupName).append(“\”);
某人追加(“,days=”)。追加(days);
某人附加('}');
使某人返回字符串();
}
公共列表getDays(){
返程天数;
}
公共作废设置天数(列表天数){
这个.天=天;
}
公共字符串getCourseGroupName(){
返回courseGroupName;
}
public void setCourseGroupName(字符串courseGroupName){
this.courseGroupName=courseGroupName;
}
}
公众静态上课日{
字符串dayName;
int dayNo;
列出演讲周期;
公共日(字符串dayName、int dayNo、列表讲师时段){
this.dayName=dayName;
this.讲师周期=讲师周期;
this.dayNo=dayNo;
}
@凌驾
公共字符串toString(){
最终StringBuilder sb=新StringBuilder(“第{”)天;
sb.append(“dayName=”).append(dayName).append(“\”);
某人追加(“,dayNo=”)。追加(dayNo);
某人追加(“,讲师期限=”)。追加(讲师期限);
某人附加('}');
使某人返回字符串();
}
公共字符串getDayName(){
返回dayName;
}
公共void setDayName(字符串dayName){
this.dayName=dayName;
}
public int getDayNo(){
返回天号;
}
公共无效setDayNo(int dayNo){
this.dayNo=dayNo;
}
公共列表get讲师周期(){
返回讲演周期;
}
公共无效设置讲师周期(列出讲师周期){
this.讲师周期=讲师周期;
}
}
公共静态类讲师周期{
字符串名称;
整数周期数;
布尔等周期;
公共讲师周期(字符串periodName、整数periodNumber、布尔值IsPeriodLocated){
this.periodName=periodName;
this.periodNumber=periodNumber;
this.isPeriodAllocated=isPeriodAllocated;
days.add(new Day(dayName, dayNo, lecturePeriods));
List<LecturePeriod> lecturePeriods = new ArrayList<>();
for (int j = 1; j <= 10; j++) {
lecturePeriods.add(new LecturePeriod("Period " + j, j, false));
}
days.add(new Day(dayName, dayNo, lecturePeriods));