2015-09-24 50 views
-2

我一直在試圖從employeeselist中刪除記錄,如果從鍵盤找到的話。如果名稱匹配,我如何刪除數據? EmployeeList的擁有所有信息,包括員工姓名,地址,電話等 這裏是我的代碼..如何從employeeselist中刪除記錄?

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

} 
}  
} 
} 

回答

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

} 

希望這有助於。

+0

在employeeselist中有6個名字。所以如果我先輸入姓氏,它應該刪除那個名字的記錄。我試過這個,但它不起作用。它只會刪除名字......如果我輸入其他名稱,它應該打印「未找到」。 – joe

+0

使用'contains'方法而不是'equals'來查找輸入終端是否給出名字或姓氏。但是如果兩個姓氏相同呢?我建議你刪除記錄,如果你找到(名字+姓氏)。你的代碼應該是唯一的。 –

+0

提示:對於'name not found',在循環中使用布爾變量來檢查記錄是否被找到。 –

0

由於列表的快速失敗屬性,您在激怒它時不能修改列表。你會得到「ConcurrentModificationException」。您可以直接調用list.remvoe(),並重寫staff類的equals方法。

如果您想在煩惱期間修改列表,您需要使用具有故障安全功能的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); 
}