java - 从数组列表中返回某个 'type'的对象

标签 java loops arraylist abstract-class

我有一个订单类:

public abstract class Order {
protected String location;
protected double price;

public Order(double price, String location){
    this.price = price;
    this.location = location;
}
public abstract double calculateBill();

public String getLocation() {
    return location;
}
public double getPrice() {
    return price;
}
public abstract String printOrder(String format);       
}

它由三个子类“NonProfitOrder”、“RegularOrder”和“OverseasOrder”扩展,每个子类仅在计算Bill() 的方式上有所不同。

然后我有 OrderManger 类

public class OrderManager {
private ArrayList<Order> orders;

public OrderManager() {

}
public OrderManager(ArrayList<Order> orders) {
    this.orders = orders;   
}   
public void addOrder(Order o) {
    orders.add(o);
}   
public ArrayList<Order> getOrdersAbove(double val) {
    for (Order o : orders) {
        double bill = o.calculateBill();
        if (bill > val)
            orders.add(o);
    }
    return orders;
}   
public int numOrders() {
    return orders.size();
}   
public String printOrders() {
    for (Order o : orders){
        String format = "Long";
    }
    return printOrders("Long");
}
public String printOrders(String type) {
    for (Order o : orders) {

    }       
}
public double totalBill() {
    double sum = 0;
    for(Order o : orders) {
         sum = o.calculateBill();
    }
    return sum;     
}   
}

我相信我一切正常,除了 printOrders(String type) 遇到问题,它返回“type”的所有订单的字符串,其中“type”是“常规”、“海外”或“非营利”。我的问题是循环遍历数组列表并仅返回给定“类型”的对象的正确方法是什么?

最佳答案

简单的解决方案如下:

public String printOrders(Class orderClass) {
    StringBuilder sb = new StringBuilder();
    for (Order o : orders) {
        if(o.getClass().equals(orderClass))
        {
            sb.append(o.printOrder()).append("\n");
        }
    }
    return sb.toString();       
}

然后当你调用该方法时:

String orderString = orderManager.printOrders(NonProfitOrder.class);
System.out.println(orderString);

关于java - 从数组列表中返回某个 'type'的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900313/

相关文章:

python - 如何循环遍历城市列表以计算它们之间的距离

javascript - 如何遍历具有相同前缀的id

java - 如何按第二个词对列表进行排序?

java - JSF 页面中删除按钮中的错误

java - 配置单元 : Tez how to increase AM Container memory

javascript - 简单的广告更改器 -each() 循环不会延迟()

list - Groovy中的List和List <String>是否相同?

java - SpringBoot不同连接池到同一个数据库

Java 8获取地址以P开头的所有员工

java - 在Java中调用另一个类中ArrayList的方法