【问题标题】:Adding String object to ArrayList将字符串对象添加到 ArrayList
【发布时间】:2017-09-27 23:38:08
【问题描述】:

我正在尝试在我的代码中创建一个方法来搜索数组列表(在我的例子中是 customerList,其中包含 Customer 对象),如果在 ArrayList 中找不到某些东西,则会向它添加新的东西...

这就是我如何设置的......

public class CustomerDatabase {

   private ArrayList <Customer> customerList = null;

   public CustomerDatabase() {
       customerList = new ArrayList<Customer>();
  }

这就是我正在尝试的方法。我正在尝试获取它,以便如果在 ArrayList 中找不到具有给定名称“n”的客户,它将添加到 ArrayList 的末尾...

public void addCustomer(String n)
{
   for(Customer c:customerList)
      if (!customerList.contains(n))
         customerList.add(n);        
}

我知道整个 .add 有问题,然后是一个字符串,但我不确定我哪里出错了。任何输入都会很棒!

【问题讨论】:

  • 您可能必须编写自己的过滤器来扫描列表中具有匹配属性的任何对象,或者实现contains 方法,该方法采用Comparator,可用于执行自定义搜索
  • 不要破坏你自己的问题。如果您想问其他问题,请单独发布。

标签: java arraylist


【解决方案1】:

您将 Customer 类与其 name 属性混淆了。您无法检查Custom 的列表是否包含String,因为它永远不会。但是您可以检查列表中是否有任何客户拥有您正在寻找的房产。如果没有找到,则必须使用该字符串构造一个新对象:

public void addCustomer(String name) {
    for (Customer c : customerList) {
        if (c.getName().equals(name)) {
            // duplicate found
            return;
        }
    }
    // no duplicates; add new customer
    customerList.add(new Customer(name));
}

这假设Customer 有一个构造函数Customer(String name) 和一个方法String getName()。根据需要进行调整。

【讨论】:

  • 或者,也许地图是更好的解决方案
  • @ScaryWombat 是的,有很多选择。我尝试使用 OP 的预期方法。
  • @D.Hoffman 不客气。将来,请尝试在您的问题中包含所有相关信息,例如错误消息和类结构,这样我们就不必猜测了。
【解决方案2】:

Customer 是一个类,您创建了一个 Customer 类类型的数组列表。没有直接的方法可以将 name(String) 与 Customer 类对象进行比较。

你应该改变你的代码——

public void addCustomer(String name) {
for (Customer c : customerList) {
    if (!c.getName().equals(name)) {
        Customer c=new Customer();
        c.setName(name);
        customerList.add(c);
    }
}   

}

在客户类中

Class Customer{
private String name;
//getter and setter method for name.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2012-11-06
    • 2015-02-15
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    相关资源
    最近更新 更多