编写此代码的最佳方法是什么:
objectsList不是一个空列表。包含许多对象。这只是为了说明类型。
List<ObjectType> objectsList= Collections.EMPTY_LIST;
ArrayList<RelatedModule> arrayWithOrder = new ArrayList<>();
Map<Integer, RelatedModule> mappedObjects= new HashMap<>();
objectsList.forEach(o ->
mappedObjects.put(o.getOrder(),
new Dto(o.getFirstName(),
o.getLastName()))
);
for (int i = 0; i < objectsList.size(); i++) {
arrayWithOrder.add(mappedObjects.get(i));
}
最佳答案
您可以使用TreeMap<Integer, RelatedModule>
,但是,除非有多个对象具有相同的顺序并且目的是仅保留最后一个,否则您可以简单地对列表进行排序然后对其进行转换:
List<RelatedModule> arrayWithOrder =
objectsList.stream()
.sorted(Comparator.comparingInt(ObjectType::getOrder))
.map(o -> new RelatedModule(o.getFirstName(), o.getLastName()))
.collect(Collectors.toList());