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);
}
}
}