`
lenj
  • 浏览: 37556 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

用Java实现文本形式的树状结构显示

阅读更多
代码如下,可根据需求衍生出各种格式的输出和使用。

package test;import java.util.ArrayList;import java.util.List;public class Folder ...{public Folder(String title) ...{this.title = title;}private String title;private List children = new ArrayList();public void addChild(Folder f) ...{children.add(f);}public List getChildren() ...{return children;}public void setChildren(List children) ...{this.children = children;}public String getTitle() ...{return title;}public void setTitle(String title) ...{this.title = title;}public String toString(String lftStr, String append) ...{StringBuilder b = new StringBuilder();b.append(append + title);b.append("\n");if (children.size() > 0) ...{for (int i = 0; i < children.size() - 1; i++) ...{b.append(lftStr+children.get(i).toString(lftStr + "│", "├"));}b.append(lftStr + children.get(children.size() - 1).toString(lftStr + " ", "└"));}return b.toString();}public static void main(String[] args) ...{Folder root = new Folder("菜单列表");Folder f1 = new Folder("开始菜单");root.addChild(f1);Folder f1_1 = new Folder("程序");f1.addChild(f1_1);Folder f1_1_1 = new Folder("附件");f1_1.addChild(f1_1_1);Folder f1_1_1_1 = new Folder("娱乐");f1_1_1.addChild(f1_1_1_1);Folder f1_1_1_2 = new Folder("娱乐2");f1_1_1.addChild(f1_1_1_2);Folder f1_2 = new Folder("辅助工具");f1.addChild(f1_2);Folder f2 = new Folder("My Documents ");root.addChild(f2);Folder f3 = new Folder("My Documents2 ");root.addChild(f3);System.out.println(root.toString(" ", ""));}}


运行结果如下:

菜单列表
├开始菜单
│├程序
││└附件
││ ├娱乐
││ └娱乐2
│└辅助工具
├My Documents
└My Documents2

应网友要求,增加了JDK 1.4版及以下的程序版本,取消了泛型。

import java.util.ArrayList;
import java.util.List;
public class Folder{
public Folder(String title)
{
this.title = title;
}
private String title;
private List children = new ArrayList();
public void addChild(Folder f)
{
children.add(f);
}
public List getChildren()
{
return children;
}
public void setChildren(List children)
{
this.children = children;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String toString(String lftStr, String append)
{
StringBuilder b = new StringBuilder();
b.append(append + title);b.append(" ");
if (children.size() > 0)
{
for (int i = 0; i < children.size() - 1; i++)
{
b.append(lftStr + ((Folder) children.get(i)).toString(lftStr + "│", "├"));
}
b.append(lftStr + ((Folder) children.get(children.size() - 1)).toString(lftStr + " ", "└"));
}
return b.toString();
}
public static void main(String[] args)
{
Folder root = new Folder("菜单列表");
Folder f1 = new Folder("开始菜单");
root.addChild(f1);Folder f1_1 = new Folder("程序");
f1.addChild(f1_1);Folder f1_1_1 = new Folder("附件");
f1_1.addChild(f1_1_1);Folder f1_1_1_1 = new Folder("娱乐");
f1_1_1.addChild(f1_1_1_1);Folder f1_1_1_2 = new Folder("娱乐2");
f1_1_1.addChild(f1_1_1_2);Folder f1_2 = new Folder("辅助工具");
f1.addChild(f1_2);Folder f2 = new Folder("My Documents ");
root.addChild(f2);Folder f3 = new Folder("My Documents2 ");
root.addChild(f3);System.out.println(root.toString(" ", ""));
}
}

分享到:
评论

相关推荐

    Java实现文本形式的树状结构显示

    这个题目涉及到了如何在控制台以文本形式展示一个树状结构。在这个例子中,我们使用了一个名为`Folder`的类来表示树的节点,每个节点可以有多个子节点,形成树的分支。 首先,`Folder`类包含了以下几个主要属性: 1...

    文件/文件夹操作(读取,删除,添加)

    6、 编写一个Java应用程序,文件名为Folder.java,编译后执行结果如下图所示,实现指定文件夹下目录和文件的文本形式的树状结构显示。要求: 1. 输入: java Folder,显示当前文件夹下的目录和文件的文本形式树状...

    数据结构中链式结构的Java实现.pdf

    在Java中,树的节点也会用到引用的概念,通过引用连接父节点和子节点,实现树状结构的构建。 6. Java的单根结构和垃圾收集机制: Java的单根结构和垃圾收集机制对于内存管理尤为重要。单根结构意味着所有的类都...

    SNL编译器java实现

    解析器根据语法规则(通常以BNF或EBNF形式定义)构建AST,这个树状结构便于后续处理。 3. **语义分析**:语义分析检查代码的逻辑含义,确保其符合SNL语言的语义规则。它处理类型检查、作用域解析、变量和函数的声明...

    java小工具

    例如,JSON Viewer可以提供树状视图来直观显示JSON结构,而JSON Editor Online则提供了在线编辑和格式化JSON的平台。 3. **Maruo804_signed_大文件的文件编辑器**: Maruo804可能是一款专为处理大型文件而设计的文本...

    java中实现树菜单

    树形菜单本质上是一种数据结构,它由多个节点组成,每个节点可以拥有零个或多个子节点,形成了一个类似树状的结构。在实际应用中,树形菜单常用于网站导航栏、文件系统目录结构展示等方面。 #### 三、技术背景 ...

    FCA-Java_FCA_形式概念分析_

    3. **概念格**:所有这些概念按照包含关系排序后,就形成了一个树状结构,即概念格。概念格的根是最大的概念(所有对象和所有属性),叶节点是最小的概念(单个对象和单个属性)。中间的概念则反映了数据的局部特征...

    凝聚层次聚类算法JAVA实现.docx

    7. **树状图表示**:凝聚层次聚类的结果通常以树状图(Dendrogram)的形式展示,它直观地显示了聚类的整个过程和层次结构。 #### 三、处理离群点 凝聚层次聚类算法也提供了处理噪声和离群点的方法,这对于提高聚类...

    xml文件以树形结构显示

    要将XML以树形结构显示,通常会使用XML解析器,如DOM(Document Object Model)解析器,它将整个XML文档加载到内存中形成一棵树,每个节点代表XML的一个部分。在GUI应用中,这棵树可以映射到树形控件上,用户可以...

    JAVA中的Swing的JTree操作的宝典

    它以树状的形式显示信息,使得用户能够浏览和交互这些数据。本篇“JAVA中的Swing的JTree操作的宝典”将深入探讨如何进行树节点的增加、删除、修改和查询操作,帮助开发者更好地掌握JTree的高级用法。 1. **创建...

    Java反编译工具(将class文件转为Java文件,免安装)

    2. **JAD**:Java反汇编器,提供命令行界面,能够将字节码反编译成接近Java语法的文本。JAD也可以与IDE集成,如IntelliJ IDEA。 3. **FernFlower**:它是JAD的一个替代品,同样提供命令行接口,反编译效果通常较好...

    java源码分析实例程序(不可用)

    抽象语法树是源代码的结构化表示,它将源代码的文本形式转换为树状数据结构,方便进行后续处理。 Java源码分析通常涉及以下几个方面: 1. **词法分析**:这是分析的第一步,将源代码分解成一个个称为“标记”...

    java Tree 菜单

    Java Tree 菜单是一种在Java应用程序中实现的交互式用户界面组件,它通常用于展示层次结构的数据,如文件系统目录、组织结构或数据库表之间的关系。这种菜单以树状的形式呈现,允许用户通过展开和折叠节点来探索和...

    java反编译工具(jd-gui-0.3.3.windows)

    Java反编译工具JD-GUI 0.3.3.windows是一款专为Java开发者设计的实用软件,它允许用户查看和分析Java字节码,将已编译的.class文件转换回可读的源代码形式,这对于理解和学习Java程序的内部工作原理、逆向工程或调试...

    树状菜单实现

    树状菜单就是这种数据结构的一种可视化表现形式,常用于文件管理器、操作系统界面、网站导航等场景,用户可以通过展开和折叠节点来浏览和操作层次化的信息。在本案例中,我们关注的是"复选框树状菜单",它不仅提供了...

    DTree-树状的文件展现-源代码

    在IT领域,树状结构是一种常见的数据表示方式,尤其在文件系统中,它能直观地展示文件和文件夹之间的层次关系。"DTree-树状的文件展现-源代码"是一个关于如何用代码实现这种树状视图的项目。这个项目的目标是帮助...

    C4Java 基础-03:控制台-任务练习

    例如,你可以创建一个树状结构,其中每个节点包含一个值和子节点列表。使用递归,你可以遍历整个树并在控制台上以层次形式展示。此外,还可以使用迭代方法,如栈或队列来遍历多级列表,这在实现如文件系统的浏览功能...

    JAVA教学(关于swing的使用)

    14. **JTree**:树状结构组件,用于展示具有层次关系的数据结构。 #### 三、Swing的图标与标记 - **ImageIcon**:`ImageIcon`类是Swing中用于封装图像图标的类,可以用来设置组件的图标。它有两个构造函数: - `...

Global site tag (gtag.js) - Google Analytics