我试图返回有关数据库中客户的信息,并按客户名称显示信息。我使用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);
}
答案 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名客户名单和名字,但订单却很低。