如何从员工列表中删除记录?

时间:2015-09-24 04:03:22

标签: java arrays

如果从键盘找到名​​字,我一直在试图从雇员那里删除记录。如果名称匹配,我该如何删除数据? employeeelist拥有所有信息,包括员工姓名,地址,号码等。 这是我的代码..

public static void main(String arg[])
{
Scanner kb = new Scanner(System.in);
ArrayList<StaffMember> employeelist = new ArrayList<StaffMember>();

Staff personnel = new Staff();
StaffMember rc = null;

for (int i=0; i<personnel.getSize(); i++)
{
  employeelist.add(personnel.getStaff(i));
 }


 boolean n = true;


for (int i=0; i<personnel.getSize(); i++)
{
 while(n)
 {
 System.out.print("Enter the name: ");
 String inLine = kb.nextLine();

 rc = employeelist.get(i);
 System.out.println(rc.name);

 if(rc.name.equals(inLine))
 {
    n = false;
 }
 else
 {
 employeelist.remove(i);

 }
 System.out.println(employeelist);

 }
 }      
 }
 }

2 个答案:

答案 0 :(得分:1)

如果您要删除从键盘找到的名称的记录(从终端输入),

你可以试试这个:

 System.out.print("Enter the name: ");
 String inLine = kb.nextLine();

 for (int i=0; i<personnel.getSize(); i++)
 {
  rc = employeelist.get(i);
  System.out.println(rc.name);

  if(rc.name.equals(inLine))
  {
   employeelist.remove(i); 
   break; //
  }

 }   

希望这有帮助。

答案 1 :(得分:0)

由于列表的快速失败属性,您无法在激怒期间修改列表。你会得到&#34; ConcurrentModificationException &#34;。您可以使用覆盖等于员工类的方法直接调用list.remvoe()。

如果要在激活期间修改列表,则需要使用故障安全的ListIterator。 你可以这样做。

public static void main(String[] args) {

    List<String> list = new ArrayList<String>();
    // adding Values in list
    list.add("Raghvendra");

    for (int i = 0; i < 5; i++) {
        list.add("Item" + i);

    }

    System.out.println(list);

    for (ListIterator<String> listIterator = list.listIterator(); listIterator
            .hasNext();) {
        String val = (String) listIterator.next();
        if (val.equals("Raghvendra"))
            listIterator.remove();

    }

    System.out.println(list);
}