如何查看所有 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中重复,如何删除所有出现的元素[重复]

如果 spark 数据框的特定列中的所有条目都为空,则删除

Java - 删除 ArrayList 中的重复项

房间持久性库。删除所有

Hibernate Envers:如何从我的审计表中删除条目?

PHP中使用ElasticSearch