Java 对于我选择的名称,在arraylist中将布尔值设置为inactive,然后将它们存储在另一个数组中?
我会尽量简短地解释代码。。我有一个arraylist,其中包含.txt文件中的成员。在这个文件中,我首先使用布尔值将所有成员设置为活动的“true”。我想做的是使用一个方法,将一个字符串中的名字(我想将.txt文件中的人的名字设置为inactive)设置为非活动(false),然后将该人存储在另一个数组中,并可能将其从活动列表中删除,以便它不包含非活动成员 我就是这样开始的Java 对于我选择的名称,在arraylist中将布尔值设置为inactive,然后将它们存储在另一个数组中?,java,arrays,arraylist,store,Java,Arrays,Arraylist,Store,我会尽量简短地解释代码。。我有一个arraylist,其中包含.txt文件中的成员。在这个文件中,我首先使用布尔值将所有成员设置为活动的“true”。我想做的是使用一个方法,将一个字符串中的名字(我想将.txt文件中的人的名字设置为inactive)设置为非活动(false),然后将该人存储在另一个数组中,并可能将其从活动列表中删除,以便它不包含非活动成员 我就是这样开始的 public static void inActivateName(ArrayList<Member> reg
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
}
}
构造函数执行以下操作:isActive=true
我真的不知道如何解决这个问题,任何帮助都非常感谢 有一个临时对象,当名称匹配被命中时,它被设置为当前迭代对象。只需在您指定的块中列出.remove(name)和tempObj.isActive=false。为您的成员活动性创建一个setter:
public void setActive(boolean active) {
this.active = active;
}
public boolean isActive(){
return this.active;
}
现在为您的代码设计提供一个建议:
制作一张地图
。外部映射是按名称命名的成员组。内部映射是按id的成员。通过这种方式,您可以真正简化代码:
public static void inActivateName(Map<String,Map<String, Member>> activeMembers, Map<String,Map<String, Member>> inactiveMembers, String name) {
Map<String, Member> members = activeMembers.get(name);
if(members != null)
System.out.println("Found" + members.size() + " members with the name " + name);
System.out.println("Do you really want to inactivate" + name + " ? (Y/N)";
String svar = lasaIn.nextLine();
if(svar.equals("Y")) {
System.out.println("Which member do you want to inactivate? (choose by id)");
svar = lasaIn.nextLine();
Member member = members.get(svar);
if(member == null) {
System.out.println("No such id " + svar);
} else{
member.setActive(false);
System.out.println("Member with name " + name + " and id " + svar + " inactivated");
activeMembers.remove(svar);
if(inactiveMembers.get(name) == null){
inactiveMembers.put(name, new HashMap<String,Member>());
}
inactiveMembers.get(name).put(svar, member);
}
}
} else {
System.out.println("No such name.");
}
System.out.println("Returning to the main menu");
Menu.mainMenu();
}
publicstaticvoidinactiveName(映射activeMembers、映射inactiveMembers、字符串名){
Map members=activeMembers.get(name);
如果(成员!=null)
System.out.println(“找到”+成员.size()+”名为“+名称”的成员);
System.out.println(“您真的想停用“+name+”?(是/否)”;
字符串svar=lasaIn.nextLine();
如果(svar等于(“Y”)){
System.out.println(“您希望停用哪个成员?(按id选择)”;
svar=lasaIn.nextLine();
Member=members.get(svar);
if(成员==null){
System.out.println(“无此类id”+svar);
}否则{
成员.setActive(false);
System.out.println(“名为“+name+”且id为“+svar+”未激活的成员”);
activeMembers.remove(svar);
if(inactiveMembers.get(name)==null){
put(name,new HashMap());
}
inactiveMembers.get(name).put(svar,member);
}
}
}否则{
System.out.println(“没有这样的名称”);
}
System.out.println(“返回主菜单”);
Menu.main Menu();
}
本示例旨在说明如何在场景中更好地使用贴图,但它并不完美。如果您决定使用此概念,则进行重构可能是明智之举。我希望下面的解决方案适合您
import java.util.*;
public class HelloWorld{
public static void main(String []args){
ArrayList<String> active=new ArrayList<String>();
active.add("person1");
active.add("person2");
active.add("person3");
ArrayList<String> inactive=new ArrayList<String>();
deactive("person2",active,inactive);
System.out.println(active);
System.out.println(inactive);
}
public static void deactive(String person, ArrayList active, ArrayList inactive)
{
if(active.contains(person))
{
active.remove(person);
inactive.add(person);
}
}
}
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
ArrayList active=新的ArrayList();
激活。添加(“人员1”);
激活。添加(“人员2”);
激活。添加(“人员3”);
ArrayList inactive=新的ArrayList();
不活跃(“人2”,活跃,不活跃);
系统输出打印项次(活动);
系统输出打印项次(非活动);
}
public static void deactive(字符串person、ArrayList active、ArrayList inactive)
{
如果(活动。包含(人))
{
主动。移除(人);
不活动。添加(人);
}
}
}
如您所见,我有两个arraylist active和inactive。最初,所有人员都存储在active arraylist中,inactive arraylist为空。然后我调用一个函数,发送要从active Array中删除的人员的姓名。调用该函数后,我打印了两个arraylist。您可以看到ar person将从活动arraylist中删除并添加到非活动arraylist中
我希望有帮助
import java.util.*;
public class HelloWorld{
public static void main(String []args){
ArrayList<String> active=new ArrayList<String>();
active.add("person1");
active.add("person2");
active.add("person3");
ArrayList<String> inactive=new ArrayList<String>();
deactive("person2",active,inactive);
System.out.println(active);
System.out.println(inactive);
}
public static void deactive(String person, ArrayList active, ArrayList inactive)
{
if(active.contains(person))
{
active.remove(person);
inactive.add(person);
}
}
}