java多关键字检索_java tree列表关键字检索
java tree列表关键字检索
java tree列表关键字检索
如上图所示,想要检索包含a的文件及文件夹。
1、创建一个文件类。
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zyh
* @Date 2020/10/19 15:34
*/
@Data
public class FileDTO implements Serializable {
private Long id;
private String name;
private Integer type;
private String fullPath;
private Long pid;
private List children;
private Integer hasChild;
public FileDTO(Long id,String name,Integer type, String fullPath,Long pid,Integer hasChild){
this.id=id;
this.name=name;
this.type=type;
this.fullPath=fullPath;
this.pid=pid;
this.hasChild=hasChild;
}
}
2、开始处理
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
/**
* @Author zyh
* @Date 2020/10/19 15:36
*/
@Slf4j
public class Test {
//原始数据
private static List queryData=new ArrayList<>();
//返回数据
private static List returnData=new ArrayList<>();
private static Gson gson=new Gson();
//关键字
private static String keywords="a";
public static void main(String[] args) {
//顶级目录
dingji(returnData);
//递归补全子孙
digui(returnData);
//删除不包含的枝蔓
if(!StringUtils.isEmpty(keywords)){
del(returnData);
//将不符合条件,子目录又为空的删除掉
delSonNull(returnData);
}
log.info(gson.toJson(returnData));
}
private static void delSonNull(List list) {
Iterator iterator = list.iterator();
while(iterator.hasNext()){
FileDTO fileDTO = iterator.next();
String name = fileDTO.getName();
List children = fileDTO.getChildren();
if(!name.contains(keywords)){
if(Objects.isNull(children)||children.size()==0){
iterator.remove();
}else{
delSonNull(fileDTO.getChildren());
}
}
}
}
private static void del(List list){
Iterator iterator = list.iterator();
while(iterator.hasNext()){
FileDTO fileDTO = iterator.next();
String name = fileDTO.getName();
if(!name.contains(keywords)){
if(fileDTO.getHasChild()==2){
iterator.remove();
}else{
List children = fileDTO.getChildren();
if(Objects.nonNull(children)&&children.size()>0){
del(fileDTO.getChildren());
}
}
}
}
}
private static void dingji(List list){
queryData.forEach(s->{
if(s.getPid()==0L){
list.add(s);
}
});
}
private static void digui(List list) {
list.forEach(s->{
Long id = s.getId();
if(s.getHasChild()==1){
List children=getChildren(id);
s.setChildren(children);
digui(children);
}
});
}
private static List getChildren(Long pid){
List children=new ArrayList<>();
queryData.forEach(q->{
if(pid.longValue()==q.getPid().longValue()){
children.add(q);
}
});
return children;
}
static{
FileDTO fileDTO1=new FileDTO(1L,"c",2,",1,",0L,1);
FileDTO fileDTO2=new FileDTO(2L,"a.xls",1,",1,2,",1L,2);
FileDTO fileDTO3=new FileDTO(3L,"1016翻译.xlsx",1,",1,3,",1L,2);
FileDTO fileDTO4=new FileDTO(4L,"b",2,",1,4,",1L,1);
FileDTO fileDTO5=new FileDTO(5L,"b.xlsx",1,",1,4,5,",4L,2);
FileDTO fileDTO6=new FileDTO(6L,"a",2,",1,6,",1L,2);
FileDTO fileDTO7=new FileDTO(7L,"a.xls",1,",7,",0L,2);
FileDTO fileDTO8=new FileDTO(8L,"a8.xls",1,",1,4,8,",4L,2);
queryData.clear();
queryData.add(fileDTO1);
queryData.add(fileDTO2);
queryData.add(fileDTO3);
queryData.add(fileDTO4);
queryData.add(fileDTO5);
queryData.add(fileDTO6);
queryData.add(fileDTO7);
queryData.add(fileDTO8);
}
}
3、最终数据为
java tree列表关键字检索相关教程
JavaWeb(四)—— 配置tomcat并使用JSP显示数据库中的表格
JavaWeb(四)—— 配置tomcat并使用JSP显示数据库中的表格 此处下载的tomcat版本是8.5.59 附下载连接 https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.59/bin/ 下载后解压到自选目录, 此处使用IDEA配置,新建一个maven的webapp项目,等待下
JavaScript基础-知识点总结
JavaScript基础-知识点总结 1. JavaScript简介 1. 什么是JavaScript? JavaScript 是?种客户端脚本语?(脚本语?是?种轻量级的编程语?)。 JavaScript 通常被直接嵌? HTML ??,由浏览器解释执? JavaScript 是?种解释性语?(就是说,代码执?不进?预编译)。 特
Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立
Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立子文件夹 1. 代码实例 将 /Users/shiheng/desktop/测试文件 目录下的图片(包含子文件夹目录下的图片)移动到了 /Users/shiheng/desktop/测试结果 目录下,默认不分批次建立子文件夹, 重名文件
整理相关实现Java的jar注册为系统服务的方法
整理相关实现Java的jar注册为系统服务的方法 在开发运维中,比如现在比较流行的 Spring-Boot 这种微服务,在Windows上面实现打包运行啥的有个控制台窗口,如果不注意关了服务就GG了,这里整理一些相关的Windows上注册Java的Jar为服务的方法等。 下载地址:htt
java对象转map
java对象转map /** * 对象 转 map * @param * @param t * @return */ public static MapString,Object ObjectToMap(Object t){ MapString,Object resultMap = new HashMap(60); try { //动态加载类 Class cls = Class.forName(t.getClass().toString().split(
java实现树形菜单
java实现树形菜单 java实现树形菜单 java实现树形菜单 建立相应的表 SysRegion (部门表) public class SysDept extends BaseEntity{ private static final long serialVersionUID = 1L; /** 部门ID */ private Long deptId; /** 父部门ID */ private Long p
《NEWedge--JAVA》02JDK的安装
《NEWedge--JAVA》02JDK的安装 何为JDK? 首先我们要了解Java语言的开发工具包(JDK)这一名词,其主要包含Java开发工具集和JRE(运行环境 ), 要明白上面具体内容我们就需要先了解下Java运行机制,如图所示: 我们可以很直观的看到一个Java程序的诞生分为两
掌握Android和Java线程原理
掌握Android和Java线程原理 前言 掌握多线程的使用,是程序员进阶必须掌握的技能之一,为什么多线程这么重要?因为多线程能更充分的发挥出cpu的性能,是我们在开发中提高程序性能最重要并且最有效的一种方式。怎么才能掌握多线程的使用? 只有彻底掌握线程的
java多关键字检索_java tree列表关键字检索相关推荐
- java finally的作用_java中finally关键字的特点和作用是什么
java中finally关键字的特点和作用是什么 发布时间:2020-09-08 11:12:01 来源:亿速云 阅读:114 作者:小新 小编给大家分享一下java中finally关键字的特点和作用 ...
- java volatile 基本类型_Java中Volatile关键字详解(转)
一.基本概念 先补充一下概念:Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其 ...
- java标识符的介绍_Java标识符所有关键字
Java标识符所有关键字 Java关键字介绍 1. JAVA中一些赋予特定的含义的标识符,用做专门用途的字符串称为关键字. 2. 所有JAVA关键字都是小写英文字母 3. goto和const虽然从未 ...
- java 数据库 事务 只读_java – odd SQLException – 无法检索转换只读状态服务器
我有一个 Quartz作业,每5分钟一次在MySQL数据库中执行一个存储过程,由于某种原因,3个执行中有1个失败,并提供了这个奇怪的异常.我搜索并搜索了这个异常是什么意思,但是我找不到解决方案.这是完 ...
- case是java关键字吗_Java关键字
3. 程序控制语句 1) break 跳出,中断 break 关键字用于提前退出 for.while 或 do 循环,或者在 switch 语句中用来结束 case 块. break 总是退出最深层的 ...
- java 主类作用_JAVA 关键字及其作用解释
3. 程序控制语句 1) break 跳出,中断 break 关键字用于提前退出 for.while 或 do 循环,或者在 switch 语句中用来结束 case 块. break 总是退出最深层的 ...
- java 有哪些关键字_JAVA的常用关键字有哪些?
JAVA的常用关键字有哪些? 发布时间:2020-05-25 21:46:00 来源:亿速云 阅读:133 作者:鸽子 下表是java中经常会用到的关键字: 一:用于定义访问权限修饰符的关键字: 1) ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- java 中关键字_Java中的关键字
Java中的关键字一共有53个,包含常用的51个关键字和2个保留字 1. 保留字 2个:预留的关键字,即Java中未被使用到的关键字 const 保留字,即预留的关键字 goto 保留字,即预留的 ...
最新文章
- 启用CORS实现Ajax跨域请求
- 在VMware Workstation上安装Ubuntu 16.04 Server操作系统
- 陶哲轩实分析定理17.3.8(三)
- templateref html内容,angular之ng-template模板加载
- 雾里散步——这次聊聊自已
- flash 语法 入门
- 送你一份用Electron开发桌面应用的避坑指南【送3本书,含犀牛书】
- 一些oj的返回结果:通过结果找错误,debug。
- 利用光学流跟踪关键点---30
- python pip使用_Python——pip的安装与使用
- Android中的Handler总结
- Android 旋转木马轮播,jQuery旋转木马式幻灯片轮播特效
- 树状数组(搬运自维基百科)
- 有效数据包含额外数据_设置数据有效性的一些技巧
- ubuntu16.04中安装MESA 17.3.3
- ubuntu用virtualbox安装windows
- 内存超频时序怎么调_一个傻瓜式内存超频教程
- EMC的青青子衿及其它
- OPTA 7模式测试说明
- LCEDA-国产PCB设计工具
热门文章
- 戒烟日志(2017)
- HttpServletRequest获取URL
- win10电脑发现不了华为share_如何把win10 笔记本和华为手机用huawei share连接起来?...
- R语言(6) 双坐标图
- 【原创】iPhone7 或 iPhone7 Plus 换铃声 for mac
- Prepack详细介绍及微信小程序优化的新思路
- java计算机毕业设计线上投保的设计源码+系统+mysql数据库+lw文档+部署
- 微服务架构在二手交易平台(转转)中的实践
- CPA2021_会计_东奥张志凤_02_会计概述、财务报告目标、会计基本假设和会计基础
- [单源最短路]逃离僵尸岛