我有一个层级结构的列表,如下所示,我想将其转换为扁平的列表。
我编写了一个名为"convertToFlatList"的方法,并使用它。但是最终结果中缺少一些元素。我做错了什么?
此外,除了我使用的方法之外,是否有更好的方法将我的列表转换为扁平列表?
我添加了一个示例代码和一些类似于我在场景中使用的对象。最终结果应该是1、2、3、4、5、6、7。
我编写了一个名为"convertToFlatList"的方法,并使用它。但是最终结果中缺少一些元素。我做错了什么?
此外,除了我使用的方法之外,是否有更好的方法将我的列表转换为扁平列表?
我添加了一个示例代码和一些类似于我在场景中使用的对象。最终结果应该是1、2、3、4、5、6、7。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
Member memberOne = new Member(1);
Member memberTwo = new Member(2);
Member memberThree = new Member(3);
Member memberFour = new Member(4);
Member memberFive = new Member(5);
Member memberSix = new Member(6);
Member memberSeven = new Member(7);
memberTwo.setChildren(Arrays.asList(memberThree, memberFour));
memberFour.setChildren(Arrays.asList(memberFive, memberSix));
List<Member> memberList = Arrays.asList(memberOne, memberTwo, memberSeven);
List<Member> flatList = new ArrayList<>();
List<Member> convertedList = convertToFlatList(memberList, flatList);
System.out.println(convertedList);
}
private static List<Member> convertToFlatList(List<Member> memberList, List<Member> flatList)
{
for (Member member : memberList)
{
if (member.getChildren() != null)
{
convertToFlatList(member.getChildren(), flatList);
}
else
{
flatList.add(member);
}
}
return flatList;
}
}
class Member
{
private List<Member> children;
private int memberId;
Member(int memberId)
{
this.memberId = memberId;
}
List<Member> getChildren()
{
return children;
}
void setChildren(List<Member> children)
{
this.children = children;
}
int getMemberId()
{
return memberId;
}
void setMemberId(int memberId)
{
this.memberId = memberId;
}
@Override
public String toString()
{
return String.valueOf(this.memberId);
}
}
Member
是否有子元素,您都需要始终调用flatList.add(member);
。 - Ivan