我有一个Building
类rooms
属性的类List
:
private List<Room> rooms;
Run Code Online (Sandbox Code Playgroud)
我写了以下方法来向列表中添加一个房间:
public void addRoom(Room room) {
this.rooms.add(room);
}
Run Code Online (Sandbox Code Playgroud)
此代码不会立即引发异常,但房间不会添加到列表中.此外,在迭代中调用该方法,在从addRoom
方法返回到此迭代之后,跳过下一次迭代,然后NullPointerException
引发a.
我正在从文件创建Room对象.以下是我调用该方法的方法:
Room newRoom = new Room();
newRoom.setName(meetingRoom[0]);
newRoom.setCode(meetingRoom[1]);
few more setters ...
home.addRoom(newRoom);
Run Code Online (Sandbox Code Playgroud)
home是之前通过另一种方法找到的Building的实例,根据调试器它的值是可以的.
我有一个ArrayList,里面填充了名为projectsCurrent的对象"Project".每个项目都有自己的名字,州,manDays等.
我想遍历这个列表和每个项目检查if (manDaysDone >= manDays)
.如果确实如此,那么比项目完成并且我想要更改其状态,将其从列表中删除并将其添加到另一个(projectsDone
).
当我尝试使用Iterator来实现我的目标时,似乎在迭代中丢失了当前项目的链接,例如,在此代码中,NoSuchElementException
在if条件中引发了一个:
Iterator<Project> i = projectsCurrent.iterator();
while (i.hasNext()){
if (i.next().getManDaysDone() >= i.next().getManDays()){
i.next().setState(ProjectState.DONE);
}
}
Run Code Online (Sandbox Code Playgroud)
只是为了弄清楚我想要实现的目标.以下for
循环完成了这项工作,但当然后来我得到了ConcurrentModificationException
:
for (Project currentProject : projectsCurrent){
if (currentProject.getManDaysDone() >= currentProject.getManDays()) {
currentProject.setState(ProjectState.DONE);
projectsDone.add(currentProject);
this.budget += currentProject.getPrice();
projectsCurrent.remove(currentProject);
}
}
Run Code Online (Sandbox Code Playgroud) 我想复制 /usr/lib 中以 .X.0.0 结尾的所有文件,其中 X 是偶数。有没有比以下方法更好的方法来选择所有文件?
ls /usr/lib | grep "[02468].0.0$"
Run Code Online (Sandbox Code Playgroud)
我对这个解决方案的问题是,如果存在名称类似于“xy.800.0.0”的文件,我需要使用括号三次等。