Java 使用ArrayList中的索引编辑对象
这是第一个代码,即Person类:Java 使用ArrayList中的索引编辑对象,java,arraylist,Java,Arraylist,这是第一个代码,即Person类: public class Person { private int age; private String name; public Person(String name,int age){ this.age = age; this.name = name; } public void setName(String name){ this.name = name;
public class Person {
private int age;
private String name;
public Person(String name,int age){
this.age = age;
this.name = name;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String toString(){
return name+","+age;
}
}
然后这是主类,它将在其中显示输出:
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class PersonDatabase {
public static void main(String[] args) {
ArrayList<Person> list= new ArrayList<>();
Person p = new Person("",0);
int choice =0;
String listing ="";
do{
choice=Integer.parseInt(JOptionPane.showInputDialog(null,"\nChoices:"+"\n[1]Add"+"\n[2]Edit"+"\n[3]Delete"+"\n[4]Search"+"\n[5]View"+"\n[6]Sort"+"\n[7]Exit"+"\nEnter Choice:"));
switch(choice){
case 1:
String name = JOptionPane.showInputDialog(null,"\nEnter Name:");
int age = Integer.parseInt(JOptionPane.showInputDialog(null,"\nEnter Age:"));
list.add(new Person(name,age));
break;
case 2:
try{
int index = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter index value:"));
name = JOptionPane.showInputDialog(null,"Enter Name:");
age = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Age:"));
list.set(index,name,age);
}catch(IndexOutOfBoundsException e){
JOptionPane.showMessageDialog(null,"Invalid Index");
}
break;
case 3:
break;
case 4:
break;
case 5:
if(!list.isEmpty()){
for(int i=0;i<list.size();i++){
listing+=list.get(i).toString()+"\n";
}
JOptionPane.showMessageDialog(null,listing);
}else{
JOptionPane.showMessageDialog(null,"ERROR","", JOptionPane.WARNING_MESSAGE);
}
break;
case 6:
break;
case 7:
break;
}
}while(choice!=7);
}
}
import java.util.ArrayList;
导入javax.swing.JOptionPane;
公共类PersonDatabase{
公共静态void main(字符串[]args){
ArrayList=新建ArrayList();
人员p=新人员(“,0);
int-choice=0;
字符串列表=”;
做{
choice=Integer.parseInt(JOptionPane.showInputDialog(null),\n注释:“+”\n[1]添加“+”\n[2]编辑“+”\n[3]删除“+”\n[4]搜索“+”\n[5]查看“+”\n[6]排序“+”\n[7]退出“+”\n输入选项:);
开关(选择){
案例1:
String name=JOptionPane.showInputDialog(null,“\n输入名称:”);
int age=Integer.parseInt(JOptionPane.showInputDialog(null,“\n输入年龄:”);
列表。添加(新人员(姓名、年龄));
打破
案例2:
试一试{
int index=Integer.parseInt(JOptionPane.showInputDialog(null,“输入索引值”);
name=JOptionPane.showInputDialog(null,“输入名称:”);
age=Integer.parseInt(JOptionPane.showInputDialog(null,“输入年龄:”);
列表.集合(索引、名称、年龄);
}catch(IndexOutOfBoundsException e){
showMessageDialog(null,“无效索引”);
}
打破
案例3:
打破
案例4:
打破
案例5:
如果(!list.isEmpty()){
对于(inti=0;i创建Person
实例,然后将其设置为索引
list.set(index,name,age);
改用
list.set(index,new Person(name,age));
在将Person
s添加到列表时,您已经在add()
方法中执行了相同的操作。同样,只需使用set()
方法即可
问题是,您没有在每次调用视图
时重置列表
。在视图
的开头,您可以将其重置为空字符串。添加以下行
case 5:
listing = "";
创建Person
实例,然后将其设置为索引
list.set(index,name,age);
改用
list.set(index,new Person(name,age));
在将Person
s添加到列表时,您已经在add()
方法中执行了相同的操作。同样,只需使用set()
方法即可
问题是,您没有在每次调用视图
时重置列表
。在视图
的开头,您可以将其重置为空字符串。添加以下行
case 5:
listing = "";
如果您知道Person
对象的索引i
,list.get(i)
将为您获取可以就地修改的对象。由于您的Person
对象是可变的,您可以执行以下操作:
Person p = list.get(i);
p.setName(name);
p.setAge(age);
这是因为p
引用的Person
对象与存储在列表中的Person
对象相同,如果您知道Person
对象的索引i
,list.get(i)
将为您获取可以在适当位置修改的对象。由于您的Person
对象是可变的,因此您可以执行以下操作:
Person p = list.get(i);
p.setName(name);
p.setAge(age);
这是因为p
引用了存储在列表中的同一Person
对象,您可以通过搜索用户名进行编辑。通过这样做,应用程序可以保证不会出现IndexOutOfBoundException
?
在案例2中,首先获取输入的用户名。然后在列表中循环找到他。一旦找到,使用列表。获取(i)
获取用户,编辑它,并打破循环。您可以通过搜索用户名来改为编辑。通过这样做,应用程序可以保证不会出现索引自动边界异常?
在case2
中,首先获取输入的用户名。然后在列表中循环找到他。一旦找到,使用list.get(i)
获取用户,编辑它,并打破循环。当我尝试获取输出时,它只添加但不编辑对象。您是否更新了上面答案中提供的代码。它应该执行。list.set(index,element)->将此列表中指定位置的元素替换为指定的元素。
在本地对代码进行更改并运行它。它应该可以工作。当我只输入了一个对象时,我可以编辑它,但当我添加另一个对象后再编辑它时,它将只生成一个新对象,而不会编辑我指定的索引值,但需要一些资源nd调试它。比如当前索引的值或列表的大小。当我尝试获取输出时,它只添加但不编辑对象。您是否更新了上面答案中提供的代码。它应该执行。list.set(index,element)->将此列表中指定位置的元素替换为指定的元素。
在本地对代码进行更改并运行它。它应该可以工作。当我只输入了一个对象时,我可以编辑它,但当我添加另一个对象后再编辑它时,它将只生成一个新对象,而不会编辑我指定的索引值,但需要一些资源nd调试。例如,当前索引的值或列表的大小是多少。您不应将答案中的代码添加到OP。这将混淆文章的未来读者。您不应将答案中的代码添加到OP。这将混淆文章的未来读者。