我正在做作业,它说我必须能够从对象的arraylist中删除一个条目。
我尝试检查它是否包含我要删除的用户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;
}
}
}
所以我的问题是?如何删除对象?
答案 0 :(得分:1)
只要remove在比较该对象和我们要求删除的对象时返回true,.equals方法将从数组中删除对象。这对于相同的字符串是正确的;默认情况下,其他对象仅等于它们自己(仍然可以将对象添加到数组并保留引用它的另一个变量)。
您也可以随时删除by array index。
答案 1 :(得分:0)
您可能只需要使用以下方法:List&lt; T> #remove,删除有问题的对象
答案 2 :(得分:0)
您必须遍历数组并找到您要查找的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”。
答案 3 :(得分:0)
知道了!
感谢大家的投入。真的让我的大脑以不同的方式思考哈哈。
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);
}
}
}
答案 4 :(得分:-1)
基本上看,
如果列表包含id与removeid相同的信息,则需要从arraylist中删除对象信息。
所以在删除之前,您需要检查列表中的信息ID
所以去迭代列表并在每次迭代中查找信息并检查其id equlas to removeid
如果等于则执行list.remove(信息)
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);
}
}