java生成樹最快的寫法


樹對象的類定義如下

@Setter
@Getter
public class TreeDto {
    private Integer id;
    private String name;
    private Integer parentId;
}


生成樹的方法代碼 

public static List<TreeDto> buildTreeParallel(List<? extends TreeDto> list) {
    List<TreeDto> result = new ArrayList<>();
    Map<Integer, TreeDto> map = new HashMap<>(list.size());
    list.forEach(e -> map.put(e.getId(), e));
    Set<? extends Map.Entry<Integer, ? extends TreeDto>> entries = map.entrySet();
    entries.parallelStream().forEach(entry -> {
        TreeDto value = entry.getValue();
        if (value != null) {
            TreeDto treeDto = map.get(value.getParentId());
            if (treeDto != null) {
                List<TreeDto> children = treeDto.getChildren();
                if (children == null) {
                    children = new ArrayList<>();
                    treeDto.setChildren(children);
                }
                children.add(value);
                treeDto.setChildrenCount(children.size());
            } else {
                result.add(value);
            }
        }
    });
    return result;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章