当前位置: 首页 > 编程日记 > 正文

java父子表_数据库二维表转父子关系,java,stream,list

需求描述:把数据库中的省市二维表,查询到内存中后,转换为父子层级关系。通过jdk8中的stream方式实现。

数据关系:

0fe59edf269b3da5a70d240257997044.png

320004    福建省    320507    南平市

430000    湖南省    430100    长沙市

320000    江苏省    320583    昆山市

430000    湖南省    430681    汩罗市

210000    辽宁省    210100    沈阳市

320000    江苏省    320500    苏州市区

430000    湖南省    430381    湘乡市

130000    河北省    130700    张家口市

代码实现:

父类,省的javabean

import lombok.Data;

import java.util.List;

@Data

public class ProvincesVo {

private String provinceCode;

private String provinceName;

private Listcities;

}

子类,市的javabean

import lombok.Data;

@Data

public class CitiesVo {

private String cityCode;

private String cityName;

public CitiesVo(){}

public CitiesVo(String cityCode, String cityName) {

this.cityCode = cityCode;

this.cityName = cityName;

}

}

具体处理业务逻辑:

Listlist = projectMapperA.searchCity(map);

ListparentVoList = new ArrayList<>();

list.parallelStream().collect(Collectors.groupingBy(o -> o.getProvincecode(),Collectors.toList())).forEach(

(id,transfer) -> {

ProvincesVo provincesVo = new ProvincesVo();

ListchildVoList = transfer.stream().map(o -> {

provincesVo.setProvinceCode(o.getProvincecode());

provincesVo.setProvinceName(o.getProvincename());

return new CitiesVo(o.getCitycode(),o.getCityname());

}).collect(Collectors.toList());

provincesVo.setCities(childVoList);

parentVoList.add(provincesVo);

}

);

描述:在处理嵌套层测时候,觉得不太合适,希望各位小伙伴提出改进

相关文章:

java 概述

概述&#xff1a; 1.在java中&#xff0c;数据类型具有固定的大小&#xff0c;这消除了代码移植时令人头痛的主要问题。2.在网页中运行java程序成为applet3.public成为访问修饰符&#xff0c;它用于控制程序的其它部分对这段代码的访问级别。4.单引号的数据是char类型&#xff…

HOOK 技术

在介绍 截获系统消息钩子 之前&#xff0c;这几个函数是密切相关的&#xff1a; SetWindowsHookEx() 介绍&#xff1a; 功能&#xff1a;将应用程序定义的挂钩过程安装到挂钩链中。 函数原型&#xff1a;HHOOK SetWindowsHookEx( int idHook, // 钩子类型。…

QT 中使用 OpenCv 的 CascadeClassifier 报错

问题 在 QT 中调用 OpenCv 的 CascadeClassifier 进行人脸框检测的时候&#xff0c;在构造函数中进行检测器的初始化&#xff0c;随后调用相机读取图片的时候就会报错&#xff0c;报的错误是 Segment Fault &#xff08;段错误&#xff09; 解决 尝试使用 gdb&#xff0c;va…

java vuser脚本_loadrunner12中JavaVuser脚本的编写

1、环境准备&#xff1a;友情提示&#xff1a;用本地环境&#xff0c;不要用虚拟机LoadRunner11----->对应JDK1.6版本(32位)LoadRunner12----->对应JDK1.7版本(32位)(一)、JDK下载安装完成后&#xff0c;配置环境变量&#xff1a;1)、系统变量→新建 JAVA_HOME 变量 &…

IT阅读——关于“业务”

本文转自http://www.cnblogs.com/beijiguangyong/archive/2012/11/12/2767054.html 开发当中常常听说“业务”这个词&#xff0c;什么“业务为王”之类的词不绝于耳&#xff0c;那么什么是业务&#xff1f; 百度上的解释是&#xff1a;“‘业务’更白话一些来说&#xff0c;就是…

SSH无需密码密钥登录

2019独角兽企业重金招聘Python工程师标准>>> 无密码ssh登录的主要操作简单概述为&#xff0c;将本机中的ssh密钥对中的公钥如id_rsa.pub拷贝到目标机器的ssh验证文件authorized_keys中。 1、简洁操作步骤 摘录一 &#xff1a;使用ssh-copy-id 在192.168.42.142机器…

5-4 图片修补

import cv2 import numpy as np img cv2.imread(image0.jpg,1) for i in range(200,300): # 直接修改像素值 从200画到300这样一个位置上img[i,200] (255,255,255)#当前这样一根线占三个像素img[i,2001] (255,255,255)img[i,200-1] (255,255,255) for i in range(150,250):…

OpenCV 像素存储

像素存储 OpenCV 中图像矩阵的大小取决于所用的颜色模型&#xff0c;更准确的说是取决于图像所用到的通道数。 如果使用的是灰度图&#xff0c;矩阵大概如图所示&#xff1a; 如果使用的是多通道的图像&#xff0c;矩阵中的列会包含多个子列&#xff0c;子列的个数和通道数相…

java反射用在哪里_Java反射

昨天去参加比赛了&#xff0c;所以没有进行博客迁移。人生中的第一场健体比赛&#xff0c;虽然没得奖&#xff0c;但是收获和带来的思考颇丰。意外地进入了男子B组(174以上)的半决赛&#xff0c;然后在半决赛的时候还被裁判员点名出去单独比较&#xff0c;这个很让我惊喜。最后…

html中锚点的应用【本页面跳转】

设置锚点 <a name"top"></a> 同页跳转 <a href"#top">返回顶部</a> 不同页跳转 <a href"test.htm#top>跳转到test.htm页面顶部</a> 转载于:https://www.cnblogs.com/wangmars/p/3241855.html

SQL2005CLR函数扩展-正则表达式

用过Oracle的人都知道Oracle有四个正则表达函数REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和EGEXP_REPLACE&#xff0c;而SQLServer却无法完全实现上面的功能。以前我们知道用sp_OAxxx系列函数来调用js组建实现正则&#xff0c;现在我们可以通过CLR扩展来借助.Net实现。 ※ 代…

ROW_NUMBER() OVER函数的基本用法

简单的说row_number()从1开始&#xff0c;为每一条分组记录返回一个数字&#xff0c;这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序&#xff0c;再为降序以后的没条xlh记录返回一个序号。 2row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1…

OpenC 仿射变换

仿射变换&#xff08;Affine Transformation&#xff09;又称仿射映射&#xff0c;是指在几何中&#xff0c;一个向量空间进行一次线性变化并加上一个平移&#xff0c;变换位另一个的向量空间的过程。 一个任意的仿射变换都能够表示为乘以一个矩阵&#xff08;线性变换&#xf…

做acm 需要学的算法

做acm 需要学的算法 转一个搞ACM需要的掌握的算法. 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什么就眼红, 发挥自己的长处,这才是重要的. 第一阶段&#xff1a;练经典常用算法&am…

java实现七日股票问题_七日打卡--JAVA资源限制

资源限制资源限制是指在进行并发编程时&#xff0c;程序的执行速度受限于计算机硬件资源或软件资源。 例如服务器的带宽只有2Mb/s&#xff0c;某个资源的下载速度是1Mb/s每秒&#xff0c;系统启动10个线程下载资源&#xff0c;下载速度不会变成10Mb/s&#xff0c;所以在进行并发…

Cassandra 可视化工具

2019独角兽企业重金招聘Python工程师标准>>> 最近开始接触Cassandra&#xff0c;这些天在cassandra的wiki发现了一些可视化工具的推荐。现在也把这个链接推荐给大家&#xff1a;http://wiki.apache.org/cassandra/Administration%20Tools 。 几番折腾之后&#xff0…

Linux软件的安装,更新与卸载

linux软件的安装&#xff0c;更新与卸载 Linux常见的安装为tar&#xff0c;zip&#xff0c;gz&#xff0c;rpm&#xff0c;deb&#xff0c;bin等。我们可以简单的分为三类. 第一&#xff1a;打包或压缩文件tar&#xff0c;zip&#xff0c;gz等&#xff0c;一般解压后即可&#…

因链接静态库先后顺序不正确,引起符号定义找不到

问题 项目中需要链接多个静态库&#xff0c;在编译的时候报错如下 sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm0x30)&#xff1a;对‘H264ENC_StatusGet(H264ENC_Status_t&)’未定义的引用可能原因是符号确实没有定义&#xff0c;而本文出现这个问题的原因是&#…

java中后台是那一部分_一套Java后台管理系统,拿来即用(附项目地址)

前言这套Base Admin是一套简单通用的后台管理系统&#xff0c;主要功能有&#xff1a;权限管理、菜单管理、用户管理&#xff0c;系统设置、实时日志&#xff0c;实时监控&#xff0c;API加密&#xff0c;以及登录用户修改密码、配置个性菜单等技术栈前端&#xff1a;layuijava…

基础 HTML之目录问题(相对路径和绝对路径区别)

一、相对路径和绝对路径 相对路径&#xff1a;以引用文件之网页所在位置为参考基础&#xff0c;而建立出的目录路径。因此&#xff0c;当保存于不同目录的网页引用同一个文件时&#xff0c;所使用的路径将不相同&#xff0c;故称之为相对。 绝对路径&#xff1a;以Web站点根目录…

[转]android selector 背景选择器

关于listview和button都要改变android原来控件的背景&#xff0c;在网上查找了一些资料不是很全&#xff0c;所以现在总结一下android的selector的用法。首先android的selector是在drawable/xxx.xml中配置的。先看一下listview中的状态&#xff1a;把下面的XML文件保存成你自己…

牛客国庆集训派对Day6 B.Board

链接 [https://www.nowcoder.com/acm/contest/206/B] 分析 只要在n*n范围内随便找一个斜对角的一个格子去计算就知道了 具体看代码体会吧 代码 #include<bits/stdc.h> using namespace std; int a[1010][1010];int main(){int n,i,j,x,y;//freopen("in.txt",&q…

java并发读取相同的文件_高效读取大文件,再也不用担心 OOM 了!

最近阿粉接到一个需求&#xff0c;需要从文件读取数据&#xff0c;然后经过业务处理之后存储到数据库中。这个需求&#xff0c;说实话不是很难&#xff0c;阿粉很快完成了第一个版本。内存读取第一个版本&#xff0c;阿粉采用内存读取的方式&#xff0c;所有的数据首先读读取到…

Cmake 实例学习 一

一. 第一个简单的例子 在一个目录下面实现一个简单的 hello world 程序 使用cmake进行构建的时候&#xff0c;每个目录下面都要有一个 CMakeLists.txt 的文件 如果是一个稍微大的工程&#xff0c;有多级目录&#xff0c;在上级目录中的 CMakeLists.txt 中会有定义要求编译子目…

ORA-19502: write error on file xxxxx, block number xxxx

错误现象&#xff1a; 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时&#xff0c;报如下错误&#xff1a; SQL> ALTER TABLESPACE IGNITE_EGVSQL01 ADD DATAFILE /oradata/ignt/ignite_egvsql01_d02.dbf SIZE 4096M AUTOEXTEND OFF; ERROR at line 1: O…

关于Jfinal的分享代码托管GitHub

为什么80%的码农都做不了架构师&#xff1f;>>> Blog中所有的代码已经托管到github. https://github.com/b1412 此blog中关于Jfinal的代码分享不再维护。有兴趣的朋友可以关注我的github。 大家都贡献和分享一点&#xff0c;让jfinal发展的更好~ 转载于:https:…

软件发布版本的业界规则?

文章&#xff1a;8天学通MongoDB——第一天 基础入门 今天看到一篇文章说&#xff1a;业界规则&#xff0c;偶数为“稳定版”&#xff08;如&#xff1a;1.6.X&#xff0c;1.8.X&#xff09;&#xff0c;奇数为“开发版”&#xff08;如&#xff1a;1.7.X&#xff0c;1.9.X)&am…

CMake学习资料

CMake 官方 FAQ https://gitlab.kitware.com/cmake/community/wikis/FAQ CMake 官方文档 https://cmake.org/cmake/help/cmake2.4docs.html CMake 视频教程 https://www.youtube.com/watch?vCLvZTyji_Uw CMake 维基教科书 https://zh.wikibooks.org/w/index.php?titleCMake_入…

MySQL rpm包 二进制区别_Linux环境下安装mysql5.6(二进制包不是rpm格式)

一.准备:1.CentOS release 6.82.mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz3.Linux下MySQL5.6与MySQL5.7安装方法略有不同二.卸载原有的mysqlfind / -name mysqlrm -rf 上边查找到的路径&#xff0c;多个路径用空格隔开三.在安装包存放目录下执行命令解压文件tar -zxvf mysql-…

【心情】 轻装前行

为自己做一份总结吧&#xff0c;从毕业到现在~ 时间过得不快不慢&#xff0c;从毕业到现在挣扎着已经2年多了&#xff0c;2年多经历的了很多事情。 毕业回国不到一个礼拜&#xff0c;就跑到大连工作&#xff0c;一个造船厂&#xff0c;公司在长兴岛开发区&#xff0c;岛上几万人…