我面临一个问题,即Java 8 for-each循环在打印数据时不保留顺序。 基本上,我正在打印一套清单。列表的顺序未按顺序打印。
请建议是否可以在不更改基本for-each循环的情况下订购输出。
代码示例:
AtomicInteger row = new AtomicInteger(1);
//entities is a List
entities.forEach(entity -> {
if (Optional.ofNullable(entity.getSet()).isPresent()) {
entity.getSet().forEach(obj -> {
try {
int column = 0;
addData(sheet, column++, row, nullToBlankString(entity.getName()));
addData(sheet, column++, row, convertLongToString(obj.getLegNumber()));
addData(sheet, column++, row, nullToBlankString(obj.getType()));
} catch (WriteException e) {
logger.error("Exception" + e.getCause().getMessage());
}
row.getAndIncrement();
});
}
});
private void addData(WritableSheet sheet, int column, AtomicInteger row, String s)
throws RowsExceededException, WriteException {
Label label;
label = new Label(column, row.get(), s, times);
sheet.addCell(label);
}
答案 0 :(得分:0)
集合通常是无序的,尤其是最常用的HashSet。 大多数的lamba操作都可以以任何顺序执行,甚至可以并行执行。 但是,直接在列表上的forEach会按顺序执行。
答案 1 :(得分:0)
您应该首先按支腿编号对实体进行排序 例如:
1