如果从键盘找到名字,我一直在试图从雇员那里删除记录。如果名称匹配,我该如何删除数据? 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);
}
}
}
}
答案 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);
}