将List转换为具有特定顺序的ArrayList

jan*_*eob 1 java collections lambda hashmap

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

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));
    }
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 6

您可以使用a TreeMap<Integer, RelatedModule>,但是,除非有多个具有相同顺序的对象,并且目的是仅保留最后一个,您可以简单地对列表进行排序,然后对其进行转换:

List<RelatedModule> arrayWithOrder = 
    objectsList.stream()
               .sorted(Comparator.comparingInt(ObjectType::getOrder))
               .map(o -> new RelatedModule(o.getFirstName(), o.getLastName()))
               .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)