我在物料清单的对象List<BoM>
的名单我有一个List<BoMLine>
,现在我已经通过减少在一个方法返回一个排序列表BoMLine属性的一个排序BoM
列表,如何使用java 8中的reduce对列表进行排序?
public static List<BoM> sortBoms() {
List<BoM> sortedBomList = new ArrayList<>();
BoM bomn = new BoM();
sortedBomList.add(bomList.parallelStream().reduce(bomn,
(bom1, bom2) -> sortBoM(bom1, bom2)));
System.out.println(sortedBomList.size());
return sortedBomList;
}
bomList 2是BOM清单和sortBoM方法:
private static BoM sortBoM(BoM bom1, BoM bom2) {
bom2.getLine().stream()
.sorted((l1, l2) -> l1.getLineNum().compareTo(l2.getLineNum()));
bom1 = bom2;
return bom1;
}
物料清单类:
public class BoM implements Domain {
private String BomCode;
private List<BoMLine> line = new ArrayList<BoMLine>();
public String getBomCode() {
return BomCode;
}
public void setBomCode(String bomCode) {
BomCode = bomCode;
}
public List<BoMLine> getLine() {
return line;
}
public void setLine(List<BoMLine> line) {
this.line = line;
}
public void addLine(BoMLine bomLine) {
bomLine.setbOM(this);
line.add(bomLine);
}}
和BoML ine类:
public class BoMLine implements Domain {
private Long lineNum;
private String material;
private BigDecimal Qty;
private BoM bOM;
public Long getLineNum() {
return lineNum;
}
public void setLineNum(Long lineNum) {
this.lineNum = lineNum;
}
public String getMaterial() {
return material;
}
public void setMaterial(String material) {
this.material = material;
}
public BigDecimal getQty() {
return Qty;
}
public void setQty(BigDecimal qty) {
Qty = qty;
}
public BoM getbOM() {
return bOM;
}
public void setbOM(BoM bOM) {
this.bOM = bOM;
}
public String getBoMCode() {
return bOM.getBomCode();
}
@Override
public String toString() {
return "BoMLine [ bOM=" + bOM.getBomCode() + ", lineNum=" + lineNum
+ ", material=" + material + ", Qty=" + Qty + "]";
}}
我必须通过BoMLine lineNum订购BoM列表。 但它只是返回bomList.Any帮助的一个对象?
你能发表一个输入和想要的输出的例子吗?我不确定我了解每个“BoM”应该如何排序。 – Tunaki
编辑帖子,请看看 – Nazila
我还是不明白'BoM'对象应该如何排序。您可以通过行号对'List'进行排序,但这无助于将两个“BoM”进行比较。 –
Tunaki