数据整合 java_java数据中 数据合并工具类

public class VerticalMerger {

public static List> transform(

LinkedList keyList, List> mapList) {

List> newMapList = new LinkedList>();

Map newMap = null;

List> keyMapList = null;

Map keyMap = null;

// 判断是否有需要合并的列

if (!keyList.isEmpty()) {

String key = keyList.getFirst();

Object value = null;

for (Map map : mapList) {

Object _value = map.get(key);

// 遇到合并列出现不同的值时,建立新的下级列表

if (null == _value || "".equals(_value)

|| !_value.equals(value)) {

keyMapList = new LinkedList>();

newMap = new HashMap();

newMap.put(key, value = _value);

newMap.put("children", keyMapList);

newMapList.add(newMap);

}

keyMap = new HashMap();

for (Map.Entry entry : map.entrySet()) {

if (!key.equals(entry.getKey())) {

keyMap.put(entry.getKey(), entry.getValue());

}

}

keyMapList.add(keyMap);

}

for (Map map : newMapList) {

keyMapList = (List>) map.get("children");

if (keyList.size() > 1) {

keyMapList = transform(new LinkedList(keyList

.subList(1, keyList.size())), keyMapList);

}

map.put("children", keyMapList);

Integer length = 0;

for (Map _keyMap : keyMapList) {

if (_keyMap.containsKey("length")) {

length += (Integer) _keyMap.get("length");

} else {

length = keyMapList.size();

}

}

map.put("length", length);

}

return newMapList;

}

return mapList;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值