如何查看所有 ArrayList 条目并删除特定条目?
Posted
技术标签:
【中文标题】如何查看所有 ArrayList 条目并删除特定条目?【英文标题】:How do I view all ArrayList entries and remove specific ones? 【发布时间】:2019-09-23 11:52:15 【问题描述】:我有一个客户,客户和主类。我在客户类中有一个 ArrayList 来存储每个客户。我想我已经成功添加了客户。如何在 ArrayList 中显示所有客户以及如何删除特定客户?我正在尝试在客户类中创建一个方法并在主类中调用它。
客户类别:
import java.util.ArrayList;
import java.util.Scanner;
public class customer
//create variables
private int Id;
private String firstName;
private String lastName;
public customer()
//setters and getters
public int getId()
return Id;
public void setId(int id)
Id = id;
public String getFirstName()
return firstName;
public void setFirstName(String firstName) throws InputValidationException
if (firstName.matches("\\pUpper(\\pLower)2,20"))
else
throw new InputValidationException();
this.firstName = firstName;
public String getLastName()
return lastName;
public void setLastName(String lastName) throws InputValidationException
if (lastName.matches("\\pUpper(\\pLower)2,20"))
else
throw new InputValidationException();
this.lastName = lastName;
//constructor
public customer(int Id, String firstName, String lastName)
this.Id = Id;
this.firstName = firstName;
this.lastName = lastName;
//get user input
public void customerInfo()
Scanner input = new Scanner(System.in);
while (true)
//ask user for input and get input
System.out.println("Enter id (press 'q' to quit): ");
String temp = input.nextLine();
if (temp.equals("q")) break;
int id = Integer.parseInt(temp);
System.out.println("Enter first name:");
String firstName = input.nextLine();
System.out.println("Enter last name:");
String lastName = input.nextLine();
//add customer
customers.add(new customer(id, firstName, lastName));
public void displayCustomers()
System.out.println("Customer List : ");
客户类别:
import java.util.ArrayList;
//creates an array of the customers
public final class customers
public static ArrayList<customer> customers;
public customers()
customers = new ArrayList<customer>();
public static void add(customer customer)
主类:
public class Main
public static void main(String[] args)
customer customerInfoObject = new customer();
customerInfoObject.customerInfo();
customer displayCustomersObject = new customer();
displayCustomersObject.displayCustomers();
【问题讨论】:
你应该为customer
实现toString()
、equals()
和hashCode()
。
我该怎么做?哪个类的什么代码?
【参考方案1】:
要打印列表中所有客户的信息,请使用循环。 用户可以通过多种方式删除客户。您可以从用户那里接收一个整数并删除给定索引处的客户。您还可以接收客户名称并将其与客户名称进行循环比较,然后删除具有收到名称的客户名称。
另外,不要使用空括号。只需在 if 条件前面加上 !
即可反转它
【讨论】:
这行得通,但它不是执行此操作的 OO 方式。实施toString()
并执行System.out.println(list)
,您就完成了不循环等操作。要删除,请不要循环。 List
有一个 remove(Object x)
方法。为此,您必须实现equals()
。
我认为打印列表看起来不是很人性化,但这可能只是我的看法。 remove(Object x) 的问题在于,他不使用原始数据类型列表。因此,您必须创建一个与要删除的对象具有相同值的新对象,并且在某些情况下,您可能没有所有必要的数据来执行此操作。
@PeterMmm 这听起来像是我想做的,我该如何实现?以上是关于如何查看所有 ArrayList 条目并删除特定条目?的主要内容,如果未能解决你的问题,请参考以下文章
如果元素在arraylist中重复,如何删除所有出现的元素[重复]