gpt4 book ai didi

Java递归函数将列表转换为这种数据结构

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:16 24 4
gpt4 key购买 nike

我有一个此数据结构的平面 ArrayList

public class RecyclerItem extends RecyclerViewItem {

String text="";
boolean isProduct = false;
String secondText = "";
long parentId;
long Id;


}

这扩展了这一点

public abstract class RecyclerViewItem {

private List<RecyclerViewItem> children;

private int level;

private int position;

private boolean expanded=false;

protected RecyclerViewItem(int level){
this.level = level;
}

public void addChildren(List<RecyclerViewItem> children) {
this.children = children;
}

public boolean hasChildren(){
if(children !=null && children.size() > 0){
return true;
}else{
return false;
}

}

}

我想将ArrayList转换为树状结构。这意味着使用 addChildren() 来构建结构。但我想不出一种在这里递归使用 addChildren 的方法。

注意:

  • 我不知道会有多深。这就是我的原因考虑递归而不是循环。

  • 我省略了两个类的 getter 和 setter

最佳答案

恕我直言,您不需要递归,只需按 parentIdRecyclerItem 进行分组,然后迭代列表并继续添加通过分组找到的子项。

    void updateChildren(List<RecyclerItem> recyclerItems) {
Map<Long, List<RecyclerViewItem>> recyclerItemsGroupedByParentId = recyclerItems.stream()
.collect(Collectors.groupingBy(
item -> ((RecyclerItem) item).parentId)); // We can downcast safely since the list is actually of RecyclerItem
for (RecyclerItem recyclerItem : recyclerItems) {
List<RecyclerViewItem> children = recyclerItemsGroupedByParentId.get(recyclerItem.Id);
recyclerItem.addChildren(children);
}
}

关于Java递归函数将列表转换为这种数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59541001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com