import java.util.ArrayList;
import java.util.List;
import java.util.function.BinaryOperator;
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
List<Trade> trades = TradeUtil.createTrades();
Function<Trade, Integer> doubleQty = t -> {
t.setQuantity(t.getQuantity() * 2);
return t.getQuantity();
};
BinaryOperator<Integer> adder = (a, b) -> {
System.out.println("A and B: " + a + "," + b);
return a + b;
};
Integer sum = trades.stream().map(doubleQty).reduce(1, adder);
System.out.println("Sum of qtys:" + sum);
}
}
class TradeUtil {
public static List<Trade> createTrades() {
List<Trade> trades = new ArrayList<Trade>();
Trade t = new Trade(1, "IBM", 10, "NEW");
trades.add(t);
t = new Trade(2, "APPL", 20, "PENDING");
trades.add(t);
t = new Trade(3, "IBM", 30, "NEW");
trades.add(t);
t = new Trade(4, "IBM", 40, "PENDING");
trades.add(t);
return trades;
}
public static List<Trade> createTrades(int size) {
List<Trade> trades = new ArrayList<>();
for (int i = 0; i < size; i++) {
Trade t = new Trade(i, "ISUER " + i, i + 1000, "NEW");
trades.add(t);
}
return trades;
}
}
class Trade {
private int tradeId = 0;
private String issuer = null;
private int quantity = 0;
private String status = null;
public Trade(int id, String issuer, int quantity, String status) {
this.tradeId = id;
this.issuer = issuer;
this.quantity = quantity;
this.status = status;
}
public int getTradeId() {
return tradeId;
}
public void setTradeId(int tradeId) {
this.tradeId = tradeId;
}
public String getIssuer() {
return issuer;
}
public void setIssuer(String issuer) {
this.issuer = issuer;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public String toString() {
return "Trade{" + "tradeId=" + tradeId + ", issuer=" + issuer
+ ", quantity=" + quantity + ", status=" + status + '}';
}
}
運(yùn)行結(jié)果如下: