java在arraylist中将我选择的名称的布尔值设置为inactive,然后将它们存储在另一个数组中?
我会尽量简短地解释代码。。我有一个arraylist,其中包含来自的成员。txt文件。在这个文件中,我首先使用布尔值将所有成员设置为活动的“true”。我想做的是使用一个方法,将一个字符串中的名字(我想将.txt文件中的人的名字设置为inactive)设置为非活动(false),然后将该人存储在另一个数组中,并可能将其从活动列表中删除,以便它不包含非活动成员
我就是这样开始的
public static void inActivateName(ArrayList<Member> register, String name) {
String s = "";
int counter = 0;
for(Member m : register) {
if(m.getFullName().equals(name)) {
s += (m) + "\n" ;
counter++;
}
}
if(counter < 2) {
System.out.println("Found the name " + name);
System.out.println("Do you really want to inactivate" + name + " ? " + " (Y/N) ");
svar = lasaIn.nextLine();
} else if(svar.equals("Y")) {
// Inacivate member ? ? ?
} else if(svar.equals("N")) {
System.out.println("Returning to the main menu");
Menu.mainMenu();
} else {
System.out.println("Found the name " + name + " " + counter + " times");
System.out.println(s);
System.out.println("Which member do you want to inactivate? (choose by id) ");
// inActivateId(?) not the problem
}
}
在我的成员类(另一个文件)中,我有一个方法将所有当前“成员”设置为false using
public boolean getIsActive() {
return isActive;
}
构造函数执行以下操作:isActive=true
我真的不知道如何解决这个问题,任何帮助都非常感谢
# 1 楼答案
为您的成员活动度创建一个setter:
现在为您的代码设计提供一个建议:
做一个
Map<String, Map<String,Member>>
。外部映射是按名称命名的成员组。内部映射是按id的成员。通过这种方式,您可以真正简化代码:编写此示例是为了说明如何在场景中更好地使用地图,但它并不完美。如果您决定使用这个概念,那么进行一些重构可能是明智的
# 2 楼答案
有一个临时对象,当名称匹配被命中时,它被设置为当前迭代对象。只需列出。删除(名称)和tempObj。在指定的块中,isActive=false
# 3 楼答案
我希望下面的解决方案能为您解决
如您所见,我有两个ArrayList处于活动状态和非活动状态。最初,所有人员都存储在活动arraylist中,而非活动arraylist为空。然后我调用一个函数,发送我想从活动数组中删除的人的名字。调用函数后,我已经打印了两个ArrayList。您可以看到,该特定人员已从活动arraylist中删除,并添加到非活动arraylist中
我希望有帮助