递归进行数据分级,并剔除断层数据。

本文介绍如何利用递归算法对数据进行二级单位及其下属单位的分类,同时处理存在断层的数据,确保查询结果完整。适用于Java编程环境,涉及到数据排序和结构整理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近被借到其他组帮忙,有个功能是需要查询所有二级单位的单据。就需要把所有二级单位,以及二级单位的下级单位进行分类。琢磨了半天,搞了个这个玩意出来。代码挺恶心的。存一下,防止以后用得上哈哈。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.junit.experimental.theories.Theories;

public class Test12 {
   
	public static void main(String[] args) {
   
		//二級单位
		final List<Map> listMapLevelTwo = new ArrayList<Map>();
		//二级单位及下级单位
		final List<Map> listMapLevelTwoDown = new ArrayList<Map>();
		//二级单位id
		final String s1 = "0100,0101,1100,1125,0300,9904,9905,2200,1300,1312,1801,1809,1000,1200,9907,9908,2000,9800,0400,0800,0900,2100,9906,0200,9903,9909,990A,2300,9900,9902,0600,7300,990B,990C,990D";
		//二级及下级单位id
		final String s2 = "abcd,afds,1322,030E,0100,0101,030H,030I,030J,aadsd,030K,0406,0407,0408,1123,1321,1321321,21321321321,21321321,0409,040A,040B,040C,040D,040E,030F,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,030G,0300,0403,0404,9904,9905,2101,2200,030D,1145,1146,1147,1148,1149,1150,1151,1300,1301,1302,1303,1304,1305,1306,1307,1308,1310,1311,1312,1313,1314,1315,1316,1317,1400,1401,1402,1403,1404,1405,1407,1408,1409,1411,1412,1413,1500,1600,1800,1801,1802,1803,1804,1805,1806,1808,1809,1810,1811,9700,1000,0405,0306,1200,0305,030A,9907,9908,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,9800,0400,0301,0401,0302,0402,0800,0303,0900,0307,0308,2100,9906,2102,1309,1410,1812,0200,0420,030B,129,9903,030C,9909,990A,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,040F,040G,9900,9902,040H,040I,1406,1700,1807,0600,7300,990B,990C,990D";
		//s2对应上级单位id
		final String s3 = "abcd,afds,1322,0300,9999,9999,0300,0300,0300,afdaf,0300,0400,0400,0400,1123,1321,1321321,21321321321,21321321,0400,0400,0400,0400,0400,0400,0300,9999,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,9999,1125,1125,1125,1128,1129,1125,1131,1131,1131,1134,1134,1134,1134,1134,1134,1131,1131,1131,1131,0300,9999,0420,0420,9999,9999,2100,9999,0300,1131,1145,1145,1131,1125,1149,1149,9999,1300,1300,1300,1300,1300,1300,1300,1300,1309,1309,9999,1312,1312,1312,1315,1315,9800,1400,1400,1400,9800,9800,9800,9800,9800,1410,1410,1409,9800,9800,9800,9999,1801,1801,1801,1801,1805,1805,9999,1809,1810,0100,9999,0400,0300,9999,0300,0300,9999,9999,1809,1809,1809,1815,1815,1809,1818,1819,1819,1819,1819,1818,1818,1818,1818,1818,1818,1818,1818,1818,1818,9999,2000,2000,2000,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2016,2016,2003,2019,2019,2021,2021,9999,9999,0300,0400,0300,0400,9999,0300,9999,0300,0300,9999,9999,2100,1300,1409,1809,9999,0400,0300,0200,9999,0300,9999,9999,2200,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,9999,2300,2300,2300,2303,2303,2303,2303,2303,2303,2303,2303,2303,2303,0400,0400,9999,9999,040A,040A,9800,9800,1805,9999,9999,9999,9999,9999";
		final String sz1[] = s1.split(",");
		final String sz2[] = s2.split(",");
		final String sz3[] = s3.split(",");
		
		for (int i = 0 ; i < sz1.length;i++) {
   
			Map map = new HashMap<String, String>();
			map.put("compid", sz1[i]);
			listMapLevelTwo.add(map);
		}
		
		for (int i = 0 ; i < sz2.length;i++) {
   
			Map map = new HashMap<String, String>();
			map.put("compid", sz2[i]);
			map.put("pcompid", sz3[i]);
			listMapLevelTwoDown.add(map);
		}
		
		final List<Map> data = buildDataLevel(listMapLevelTwo, listMapLevelTwoDown);
//		System.out.println("data:" + data.toString());
		
	}
	 /**
     * @param listMapLevelTwo     二级单位集合
     * @param listMapLevelTwoDown 二级以下单位集合
     * @return
     */
    public static List<Map> buildDataLevel(final List<Map> listMapLevelTwo, final List<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值