点击上方 好好学java ,选择 星标 公众号

重磅资讯、干货,第一时间送达
今日推荐:你这代码写得真丑,满屏的try-catch,全局异常处理不会吗?个人原创+1博客:点击前往,查看更多

前言

在日常的工作与学习中,我们经常会使用思维导图这个工具,来把抽象而又无形的思考转换成有形并且具体的图像,是理清思路,梳理逻辑的一大神器。

准确的说,思维导图并不是一个具体的工具,而是一种方法。是道而不是术。实际落地时,我们通常还需要借助外部的工具。从最原始的纸和笔,到各种软件,可以说是应用尽有。目前我在使用的是 xmind 这款软件,下面就会以 xmind 为媒介间接的通过 Java 代码画思维导图。

附上我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,目前,已经拿到了大厂offer,拿去不谢!

下载方式

1. 首先扫描下方二维码

2. 后台回复「Java面试」即可获取

放码过来

通过目录生成思维导图

我在看书的时候有一个习惯,先通过思维导图画出一本书的大纲,然后通过这个大纲来分主次的去阅读。可能有些同学感到疑惑,还没读过书,如何了解大纲呢?其实一本书的目录就是这本书最好的大纲。

本文通过把一个目录生成思维导图的例子来学习 xmind 基本的 api 使用。当然如果想系统学习的同学,可以参考文末给出的官方 api 链接。下图就是我们最终要生成的结果。

image.png

引入依赖

xmind 最开始是在 eclipse 上进行定制开发而来(对,这个 eclipse 就是你在遇到 idea 后,喜新厌旧抛弃的那个编程软件),所以天生就对 Java 有良好的支持。这个地址[1]就是 xmind 在 github 上的仓库。对 xmind 的操作的 api 全在  org.xmind.core 包下,按官方提示把代码拉下来在本地打个包,再引入就 ok 了。但是呢?偷懒是第一生产力。立马跑到 maven 仓库搜索了一下,发现果然有人把官方的打包上传了,直接拿来使用。(时间有点老,但是基本操作已经够了,如果想用新功能,可以拉代码自行打包)

  • pom.xml

<dependency><groupId>com.github.eljah</groupId><artifactId>xmindjbehaveplugin</artifactId><version>0.8</version>
</dependency>

准备数据

我们要生成思维导图,首先得有数据。这里的数据就是一本书的目录。

首先,书籍我选的是《一本书读懂 24 种互联网思维[2]》,选这本书,并不是因为这本书有多好,而是因为他比较典型,典型就典型在,看过这本书的目录后就没有必要再读这本书了,因为目录已经把要说的内容说的很清楚了。

那知道书名,怎么获取书的目录呢?很简单,打开豆瓣,找到这本书的详情,里面就有书籍的目录,直接把它 copy 下来就可以了,目录如下图。

image.png

开始编码

  • GeneratorDoubanXmind

/***  * **  *  * blog.coder4j.cn*  *  * Copyright (C) 2016-2019 All Rights Reserved.*  ***/
package cn.coder4j.study.example;import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.system.SystemUtil;
import com.google.common.collect.Lists;
import org.xmind.core.Core;
import org.xmind.core.CoreException;
import org.xmind.core.ISheet;
import org.xmind.core.ITopic;
import org.xmind.core.IWorkbook;
import org.xmind.core.IWorkbookBuilder;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/*** @author buhao* @version GeneratorDoubanXmind.java, v 0.1 2019-12-02 22:54 buhao*/
public class GeneratorDoubanXmind {/*** 当前类路径*/public static final String CLASS_PATH = GeneratorDoubanXmind.class.getResource("/").getPath();/*** 文件分隔符*/public static final String FILE_SEPARATOR = SystemUtil.getOsInfo().getFileSeparator();public static void main(String[] args) throws IOException, CoreException {// 读取目录String bookName = "一本书读懂24种互联网思维";List<String> contents = FileUtil.readLines(CLASS_PATH + bookName + ".txt", "utf-8");// 创建思维导图的工作空间IWorkbookBuilder workbookBuilder = Core.getWorkbookBuilder();IWorkbook workbook = workbookBuilder.createWorkbook();// 获得默认sheetISheet primarySheet = workbook.getPrimarySheet();// 获得根主题ITopic rootTopic = primarySheet.getRootTopic();// 设置根主题的标题rootTopic.setTitleText(bookName);// 章节 topic 的列表ArrayList<ITopic> chapterTopics = Lists.newArrayList();for (String content : contents) {// 如果是数字开头为章节名称if (ReUtil.isMatch("^[1-24].*?", content)) {// 创建章节节点ITopic topic = workbook.createTopic();topic.setTitleText(content);chapterTopics.add(topic);} else {// 创建小节节点ITopic topic = workbook.createTopic();topic.setTitleText(content);chapterTopics.get(chapterTopics.size() - 1).add(topic, ITopic.ATTACHED);}}// 把章节节点添加到要节点上chapterTopics.forEach(it -> rootTopic.add(it, ITopic.ATTACHED));// 保存workbook.save(CLASS_PATH + FILE_SEPARATOR + bookName + ".xmind");}
}

代码分析

基本上代码都做了注释,对于核心代码再简单分析一下。

        // 读取目录String bookName = "一本书读懂24种互联网思维";List<String> contents = FileUtil.readLines(CLASS_PATH + bookName + ".txt", "utf-8");

首先前两行不必说,我把目录数据保存到了 resources 目录下的 一本书读懂 24 种互联网思维.txt,这两行代码就是简单读取数据。

        // 创建思维导图的工作空间IWorkbookBuilder workbookBuilder = Core.getWorkbookBuilder();IWorkbook workbook = workbookBuilder.createWorkbook();

然后的两行代码,通过 Core 类创建工作空间构建者类,再通过它的  createWorkbook 方法创建出一个空白的工作空间,这个创建完就会得到一个没有任何节点的空白导图。

        // 获得默认sheetISheet primarySheet = workbook.getPrimarySheet();// 获得根主题ITopic rootTopic = primarySheet.getRootTopic();// 设置根主题的标题rootTopic.setTitleText(bookName);

再接着,通过刚刚创建 工作空间 得到主 sheet,这个 sheet 跟 excel 的概念差不多,就像浏览器的一个 tab 一样。效果如下图

image.png

另外还通过主 sheet 获得了根 topic,并设置他的标题为书名,它对应下图

image.png
        // 章节 topic 的列表ArrayList<ITopic> chapterTopics = Lists.newArrayList();for (String content : contents) {// 如果是数字开头为章节名称if (ReUtil.isMatch("^[1-24].*?", content)) {// 创建章节节点ITopic topic = workbook.createTopic();topic.setTitleText(content);chapterTopics.add(topic);} else {// 创建小节节点ITopic topic = workbook.createTopic();topic.setTitleText(content);chapterTopics.get(chapterTopics.size() - 1).add(topic, ITopic.ATTACHED);}}

这段代码比较多,但是重点是创建 topic 的操作,每个 topic 就是思维导图的一个节点,可以通过  workbook.createTopic() 来创建,同样的通过  setTitleText 设置标题。这段代码其实是分析了目录的规律,有 1-24 开头的是大章节,而后面紧跟的是小章节,一个大章节下是多个小章节(可以看上面的目录截图)。所以判断是大章节就创建一个新的节点,判断是小章节就往最后一个大章节上添加(通过 add 方法)。

        // 把章节节点添加到要节点上chapterTopics.forEach(it -> rootTopic.add(it, ITopic.ATTACHED));

刚才说了把小章节都添加到了大章节上了,但是大章节现在还是无依无靠的,所以通过一个循环全部添加到了根 Topic 上。

        // 保存workbook.save(CLASS_PATH + FILE_SEPARATOR + bookName + ".xmind");

到此我们编码结束了,但是这些操作还在内存中,我们需要通过 workbook 的 save 方法把文件保存到硬盘上,另外文件后缀记得改成 xmind,否则软件无法识别。

其它

说明

因为篇幅有限,无法贴完所有代码,如遇到问题可到相关链接里面的 example 上,查看源码。

相关链接

  1. xmind api 地址[3]

  2. study-xmind-example[4]

参考资料

[1]

地址: https://github.com/xmindltd/xmind

[2]

一本书读懂24种互联网思维: https://book.douban.com/subject/26437061/

[3]

xmind api 地址: https://github.com/xmindltd/xmind/wiki/UsingXmindAPI

[4]

study-xmind-example: https://github.com/kiwiflydream/study-example/tree/master/study-xmind-example

最后,再附上我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,目前,已经拿到了大厂offer,拿去不谢!

下载方式

1. 首先扫描下方二维码

2. 后台回复「Java面试」即可获取

【xmind】 使用 Java 生成思维导图相关推荐

  1. 如何让你的Typora笔记利用xmind离线自动生成思维导图

    作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!

  2. XMind:超越FreeMind的思维导图软件

    XMind:超越FreeMind的思维导图软件 作者: 善用佳软 日期: 2012-10-12 分类: 1.5 思维导图 标签: mindmap [友情广告]XMind Pro 2012 官方团购:授 ...

  3. Java知识点思维导图

    这是八个月以来第一次月底才开始写博客,今天继续回顾了一下Java基础知识点,个人认为基础知识是非常重要的,但总是看了忘,忘了再看,无语... 奉上思维导图:(有缺漏的欢迎各路神仙留言补充) 更多Jav ...

  4. ChatGPT自动化提高工作效率: 2分钟快速生成思维导图

    一.简要说明 ChatGPT不止是一个聊天机器人,更是一个自然语言处理.文本内容生成模型,它可以理解语言规则,不仅仅是给你输出已有的知识内容,还会给到你一些创意点子:所以我们应该学会如何使用它,让它更 ...

  5. xman的思维导图快捷键_一次性入门大纲笔记神器“幕布”,支持一键生成思维导图...

    很多人都有记笔记的习惯,我们的老师经常教导我们"上课要记笔记".其实老师说的不做,只不过我们大部分人并没有按照老师的要求去做,或者把老师的要求当做一种"作业"来 ...

  6. Java简单思维导图

    Java简单思维导图 Java 集合:List, Map, Tree 多线程:工具,锁 IO:BIO,NIO,AIO,Netty 设计模式 单例,简单工程,工厂,抽象工厂 build,装饰,obser ...

  7. 亿图AI助手一键生成思维导图,捕捉万千灵感,快速出彩!

    短短几个月,AIGC(AI-Generated Content)人工智能生成内容,就像一场惊涛骇浪席卷了全球,AIGC会改变人类创作者与工具之间的协作关系,形成新的分工方式. 不久前,亿图软件上线了一 ...

  8. 一次性入门大纲笔记神器“幕布”,支持一键生成思维导图

    很多人都有记笔记的习惯,我们的老师经常教导我们"上课要记笔记".其实老师说的不做,只不过我们大部分人并没有按照老师的要求去做,或者把老师的要求当做一种"作业"来 ...

  9. 一句话生成思维导图,【ProcessOn AI 功能上线】

    一句话生成思维导图,[ProcessOn AI 功能上线] AI 思维导图已经越来,让思考和创作更加简单!就像一个新魔法一样,打开了我们的新世界! 只需输入关键词,即可就会生成一张完整的思维导图. P ...

最新文章

  1. java利用opencv降维_opencv中PCA降维
  2. telegraf input的配置
  3. 电话号码 【trie树】
  4. 如何在一个表达式中合并两个字典?
  5. 6最好的之一 HTML5/CSS3 演示(PPT)框架
  6. java web应用开发期末考试_Java开发工程师(Web方向) - 04.Spring框架 - 期末测试
  7. MySQL备份mydumper的原理【转】
  8. (九)java多线程之CyclicBarrier
  9. 抖音品质建设 - iOS启动优化《原理篇》
  10. idm2021中文版序列号加速下载百度云网盘大文件教程
  11. Qcom平台添加 Camera 驱动(msm8953)
  12. 分享100个精美模板PPT模板,总有一款适合你
  13. Linux(九、十)文件权限及网络配置管理
  14. 华为平板电脑装linux系统,专为平板设计的Linux JingOS来了,神似iPadOS,已适配华为...
  15. TCP报文( tcp dup ack 、TCP Retransmission)
  16. matlab多孔介质蒸发,随机生成多孔介质matlab程序.doc
  17. 算法导论第八章思考题
  18. 卡斯柯经验谈│流程驱动项目管理的应用
  19. C语言单目运算符和双目运算符、三目运算符
  20. 泡沫破裂的经济学原理

热门文章

  1. STM32学习笔记:读写内部Flash。
  2. 给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?
  3. 二十五、求单点的最短路径
  4. 攻防世界Reverse第三题python-trade
  5. 设计模式--迭代器(Iterator)模式
  6. CSS之关系选择器、属性选择器、伪类选择器
  7. MTK平台的启动流程(secureboot)
  8. 网络互连基础——笔记
  9. IDA+GDB远程调试android平台 - Aarch64- elf64程序
  10. 不同语言编译的程序入口总结