首页 / JAVA / 将分层列表转换为java中的平面列表
将分层列表转换为java中的平面列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将分层列表转换为java中的平面列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2075字,纯文字阅读大概需要3分钟。
内容图文
![将分层列表转换为java中的平面列表](/upload/InfoBanner/zyjiaocheng/764/63c2adb9613348beaed86e01e3b929ba.jpg)
我有一个如下所示的分层列表,我想将其转换为平面列表.
我写了一个名为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);
}
}
解决方法:
如果会员有孩子,您可以正确地将孩子添加到展平列表中,但会错过会员本身.只需将成员添加到else块之外添加你应该没问题:
private static List<Member>
convertToFlatList(List<Member> memberList, List<Member> flatList)
{
for (Member member : memberList)
{
// Always add the member to flatList
flatList.add(memeber);
// If it has children, add them toore
if (member.getChildren() != null)
{
convertToFlatList(member.getChildren(), flatList);
}
}
return flatList;
}
内容总结
以上是互联网集市为您收集整理的将分层列表转换为java中的平面列表全部内容,希望文章能够帮你解决将分层列表转换为java中的平面列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。