编写此代码的最佳方法是什么:

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());

10-06 14:06