Java 在不知道对象的情况下从arraylist中查找和删除对象';s变量

Java 在不知道对象的情况下从arraylist中查找和删除对象';s变量,java,arraylist,Java,Arraylist,我是Java新手,为了解决这个问题,我一直在拼命工作。无论如何,下面是一个创建Person的类,下面是一个使用Person类型的ArrayList创建电话簿的类。我想编写remove函数(以便从列表中删除人员),但我的问题是,由于我只获取人员的姓名,因此无法使用Indexof函数(因为它需要对象)获取姓名所在的位置 这是我第一次使用ArrayList存储对象,所以我甚至不确定 我的结果将如何显示。我猜如果名字的位置(在我的列表中)是10,那么11是电话,12是地址。我说得对吗 public cl

我是
Java
新手,为了解决这个问题,我一直在拼命工作。无论如何,下面是一个创建Person的类,下面是一个使用Person类型的
ArrayList创建
电话簿的类。我想编写remove函数(以便从列表中删除
人员
),但我的问题是,由于我只获取人员的姓名,因此无法使用Indexof函数(因为它需要对象)获取姓名所在的位置

这是我第一次使用
ArrayList
存储对象,所以我甚至不确定 我的结果将如何显示。我猜如果名字的位置(在我的列表中)是10,那么11是电话,12是地址。我说得对吗

public class Person
    {
       private String name;
       private String phone;
       private String address;

public Person (String n, String p, String a)
{
     this.name = n;
     this.phone = p;
     this.address = a;
}

public void setPhone(String newPhone)
{
   this.phone = newPhone;
}

public String getName()
{
     return this.name;
}

public String getPhone()
{
      return this.phone;
}

public String getAddress()
{
      return this.address;
}



public String print()
{
      return "Name is : " + this.name + "\nPhone is : " + this.phone + "\nAddress is : " + this.address;
}
}

import java.util.*;
公共类电话簿
{
扫描仪输入=新扫描仪(System.in);
private ArrayList persons=新ArrayList();
私人互联网i;
私有布尔标志;
公众人士(p人)
{
增加(p);
}
公众人士()
{
系统输出打印(人);
}
公共无效查找(字符串名称)
{
flag=persons.contains(名称);
如果(标志==真)
{
System.out.println(“该名称存在!”);
}
其他的
{
System.out.println(“该名称不存在!”);
}
}
公共无效删除(字符串名称)
{
}

编辑:我计划在另一个函数中使用扫描仪。别担心。

我不确定是否要获取该数组的对象,但每个对象都被索引到该数组(具有完整属性),现在可以使用以下代码将其删除

public String removePerson(ArrayList<Person> arrayList,String name)
{
 for(Person currentPerson:arrayList)
 {
     if(currentPerson.getName().equals(name))
     {
         arrayList.remove(currentPerson);
         return "Removed successfully"
     }
 }
 return "No record found for that person";
}
publicstringremoveperson(ArrayList ArrayList,字符串名)
{
for(当前人员:arrayList)
{
if(currentPerson.getName().equals(name))
{
arrayList.remove(currentPerson);
返回“已成功删除”
}
}
返回“未找到该人员的记录”;
}

只需将arrayList和此人的姓名传递给此方法

您应该覆盖person类中的
equals()
hashCode()
方法。这样,您将定义此类型的两个对象何时被视为相等。然后您可以使用
list.contains(yourObject)
要确定该对象是否等于列表中的任何对象,这将基于您的
equals()
实现。

这对您有帮助吗

   public void remove (String theName,ArrayList<Person> persons)   {

       for (int i = 0; i < persons.size();++i) {

           if(persons[i].getName().equals(theName)) {

              persons.remove(i);
           }
      }   
   }
public void remove(字符串名称,数组列表人员){
对于(int i=0;i

向您致意,Nazar

这样会删除对象的每个元素,这意味着他的电话和地址也会被删除。如果您传递了arrayList和人名,它会删除对象及其所有属性,如果您想按电话号码删除它,请传递此号码而不是姓名并更改CurrentPerson.getName()致currentPerson.getPhoneNumber()将其作为可接受的答案,以便其他人在看到此问题后可以看到此答案是的,这很有帮助!谢谢!
   public void remove (String theName,ArrayList<Person> persons)   {

       for (int i = 0; i < persons.size();++i) {

           if(persons[i].getName().equals(theName)) {

              persons.remove(i);
           }
      }   
   }