Administrator
发布于 2024-09-13 / 22 阅读
0
0

lamdba表达式

层级机构,主要treehashmap 的key 如果用做对象存储需要注意 hashcode和equal方法

Map<Long, TreeMap<Long, Object>> menuMaps = misMenuVOS.stream()
					.collect(Collectors.groupingBy(Object::getParentId, Collector.of(() -> new TreeMap<Long, Object>(),  // Map的构造器
							(m, t) -> m.put(t.getId(), t),        // 累加器
							(left, right) -> {
								left.putAll(right);
								return left;
							})));

判断对象

Optional.ofNullable(misFieldVOS).orElseGet(()->Lists.newArrayList()) //比下面美观些 还有返回默认值
Optional.ofNullable(misFieldVOS).ifpresent(e->{})

** 注意: sql的查询几乎永远大于内存执行的时间 没有必要优化

多叉树遍历,获取查询结果路径

public List<Long> findOrgChain(Object org, Long orgId) {
		if (Objects.isNull(org)) {
			return null;
		}
		List<Long> chainIds = Lists.newArrayList();
		chainIds.add(org.getId());
		if (Objects.equals(org.getId(), orgId)) {
			return chainIds;
		}
		if (!CollectionUtils.isEmpty(org.getBranchs())) {
			List<OrgPostsVO.Org> onlyOrgs = org.getBranchs().stream()
					.filter(e -> e.getType() == CommonContentEnum.ORG.getCode()).collect(Collectors.toList());
			if (!CollectionUtils.isEmpty(onlyOrgs)) {
				for (OrgPostsVO.Org only : onlyOrgs) {
					List<Long> orgChain = findOrgChain(only, orgId);
					if (!CollectionUtils.isEmpty(orgChain)) {
						chainIds.addAll(orgChain);
						return chainIds;
					}
				}
			}
		}
		chainIds.remove(chainIds.size() - 1);
		return null;
	}

获取子集中第一个元素,利用treeHashMap

	private void getRedirect(Map<Long, TreeMap<Object, Object>> menuMaps ,Long id,Map<Long,String> redirect){
		TreeMap<Object, Object> longMisMenuVOTreeMap = menuMaps.get(id);
		if (longMisMenuVOTreeMap == null) {return ;}
		longMisMenuVOTreeMap.forEach((k,v)->{
			TreeMap<Object, Object> children = menuMaps.get(k.getId());
			if(Objects.nonNull(children)){
				Map.Entry<Object, Object> longMisMenuVOEntry = children.firstEntry();
				redirect.put(k.getId(),v.getPathName()+"/"+longMisMenuVOEntry.getValue().getPathName() );
				getRedirect(menuMaps,v.getId(),redirect);
			}

		});


评论