[英]Arraylist of Objects - How do I remove an entry?
我正在做作业,它指出我必须能够从对象的数组列表中删除一个条目。
我尝试检查它是否包含要删除的用户ID,但对象不能包含字符串
public class EmployeeProgramView extends FrameView {
ArrayList <information> database = new ArrayList <information>();
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
information a;
String ID, firstName, lastName, startDate, annualSalary, linedUp;
ID = idInput.getText();
firstName = firstNameInput.getText();
lastName = lastNameInput.getText();
startDate = startInput.getText();
annualSalary = salaryInput.getText();
linedUp = (firstName+" "+lastName+" "+annualSalary+" "+startDate);
a = new information (ID, firstName, lastName, startDate,annualSalary);
database.add(a);
System.out.println(linedUp);
}
private void listButtonActionPerformed(java.awt.event.ActionEvent evt) {
String temp="";
for (int x=0; x<=database.size()-1; x++) {
temp = temp + database.get(x).ID + " "
+ database.get(x).first + " "
+ database.get(x).last + " "
+ database.get(x).start + " "
+ database.get(x).salary + "\n";
}
finalOutput.setText(temp);
}
private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
String removeID;
removeID = idInput.getText();
if (database.contains(removeID)){
database.remove(removeID);
} else {
finalOutput.setText("No such ID in database");
}
}
class information{
String ID, first, last, start, salary;
information(String _ID ,String _first, String _last, String _start, String _salary){
ID = _ID;
first = _first;
last = _last;
start = _start;
salary = _salary;
}
}
}
所以我的问题是? 如何移除物件?
您可能只需要使用以下方法:List <T> #remove,以删除有问题的对象
您必须遍历数组并找到要查找的ID。 只需将其添加到您的主类中:
public void removeInformation(ArrayList<Information> database, String removeID) {
for(int i = 0; i < database.size(); i++) {
if(database.get(i).getID().equals(removeID)) {
database.remove(database.get(i));
}
}
}
这与您的问题无关,但是按照惯例,类以大写字母命名,因此您的“信息”类应命名为“信息”。
另外,我只是想说,如果您不知道,则在键入类之前,可以键入import语句。 例如:
import java.awt.event.ActionListener;
这样,您不必每次要使用该类时都键入“ java.awt.event.ActionListener actionListener”。
得到它了!
感谢大家的投入。 真的让我的大脑思考了不同的方式哈哈。
private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
String temp, removeID;
removeID = idInput.getText();
for (int x = 0; x<=database.size()-1; x++){
temp = database.get(x).ID;
if(removeID.equals(temp)){
database.remove(x);
}
}
}
基本上看,
如果列表包含ID与removeid相同的信息,则需要从arraylist中删除对象信息。
因此在删除之前,您需要检查列表中的信息ID
因此,请访问迭代列表,并在每次迭代中查找信息,然后检查其ID等于EQUIREDID
如果相等,则执行list.remove(information)
for (Information information: database) {
// check for ID is same as remove id
// if equals remove that entire object from list
if (information.ID.equals(removeID)) {
// remove object with ID same as removeid
database.remove(information);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.