2016-01-07 2 views
1

Это первый код, который является лицо Класс:Использование индекса в 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()

+0

вы не должны добавлять код из ответов на OP. Это смутит будущих читателей этой должности. – YoungHobbit

ответ

3

Создайте экземпляр Person, а затем установите его в индекс.

list.set(index,name,age); 

использовать вместо

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

Вы уже делаете то же самое в add() методе, при добавлении в Person сек в список. То же самое, просто используйте метод set().


Вопрос заключается в том, что вы не сбросить listing каждый раз view называется. В начале view вы можете сбросить его до пустой строки. Добавьте строки ниже.

case 5: 
    listing = ""; 
+0

, когда я пытаюсь получить вывод, он добавляет, но не редактирует объект. – blitzboy01

+0

Вы обновили код, указанный в ответе выше. Он должен это сделать. list.set (index, element) -> 'Заменяет элемент в указанной позиции в этом списке указанным элементом.' – YoungHobbit

+0

Внесите изменения в свой код локально и запустите его. Он должен работать. – YoungHobbit

3

Если вы знаете, индекс i от Person объекта, list.get(i) поможет вам объект, который вы можете изменить на месте. Так как ваш Person объект изменяемого, вы можете сделать это:

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

Это работает, потому что p относится к тому же Person объекту, хранящиеся внутри list.

0

Вы можете вместо этого отредактировать, выполнив поиск имени пользователя. При этом приложение может гарантировать, что не будет IndexOutOfBoundException. Как? В case 2 сначала введите введенное имя пользователя. Затем пройдите по списку, чтобы найти его. Найдя, используйте list.get(i), чтобы получить пользователя, отредактировать его и разбить цикл.

Смежные вопросы