使用ArrayList中的Index编辑对象

时间:2016-01-07 13:30:43

标签: java arraylist

这是人类的第一个代码:

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);
    }

}

如何使用索引以便搜索输入的对象,然后使用list.set()

进行编辑

3 个答案:

答案 0 :(得分:3)

创建Person实例,然后将其设置为索引。

list.set(index,name,age);

改为使用

list.set(index,new Person(name,age));

您已在add()方法中执行相同操作,同时将Person添加到列表中。它是一样的,只需使用set()方法。

问题是,每次调用listing时,您都不会重置view。在view的开头,您可以将其重置为空字符串。添加以下行。

case 5:
   listing = "";

答案 1 :(得分:3)

如果您知道i对象的索引Personlist.get(i)将为您提供可以在适当位置修改的对象。由于您的Person对象可变,您可以这样做:

Person p = list.get(i);
p.setName(name);
p.setAge(age);

这是有效的,因为p引用了存储在Person内的同一个list对象。

答案 2 :(得分:0)

您可以通过搜索用户名进行编辑。通过这样做,应用程序可以保证不会有IndexOutOfBoundException。怎么样? 在case 2中,首先获取输入的用户名。然后遍历列表找到他。找到后,使用list.get(i)来获取用户,编辑它并打破循环。