迭代并添加到字符串

时间:2016-06-07 15:30:20

标签: java

我试图返回有关数据库中客户的信息,并按客户名称显示信息。我使用Collection.sort对数据进行排序,但是当我迭代通过客户添加到mediaIlog并返回它时,我收到一个错误,表示该方法必须返回String类型的值当我返回一个字符串。有人可以帮助我吗?

//collection.sort
public class Customer implements Comparable<Customer>
{
    public Customer(String name) {
        this.name = name;
    }

    public int compareTo(Customer ot) {
        String name1 = this.name;
        String name2 = ot.name;
        return name1.compareTo(name2);
    }
}

这是我用来迭代客户添加到mediaIlog并返回它的方法,它给了我上面描述的错误。

ArrayList<Customer> customers = new ArrayList<Customer>();

public String getAllCustomers()
{
    String mediaIlog = "";
    for (Customer P : customers)
        return mediaIlog.add(P);    
}

3 个答案:

答案 0 :(得分:1)

使用StringBuffer累积String。承担您的类Customer已正确实现了toString方法:

public String getAllCustomers(){
    StringBuffer mediaIlog = new StringBuffer();
      for (Customer P : customers){
        mediaIlog.append(P);
      }

    return mediaIlog.toString()

}

答案 1 :(得分:1)

我认为问题在于你回错了,你应该做点什么

public String getAllCustomers()
{
    String mediaIlog = "";
    for (Customer P : customers){
        mediaIlog += P;
    }
    return mediaIlog;
}

答案 2 :(得分:0)

除了已经给出的答案之外,还有另一种方法:

public String getAllCustomers()
{
    return this.customers.stream()
            .map(Object::toString)
            .collect(Collectors.joining());
}

Java streams是一个非常强大的工具。您可以像这样轻松扩展此示例:

return this.customers.stream()
        .filter(Customer::hasOrders)
        .sorted(Comparator.comparing(Customer::getRevenue))
        .limit(10)
        .map(customer -> customer.getFirstName() + " " + customer.getLastName())
        .collect(Collectors.joining(", "));

这将返回以逗号分隔的前10名客户名单和名字,但订单却很低。