数组相同数据的合并(提取)
来源:互联网 发布:导游软件 编辑:程序博客网 时间:2024/04/29 13:24
1. 使用字典提取
把数组对象中相同的属性定义位字典的键,
{
“key1”:object,
"key2" : object,
"key3" : List<object> , //相同数据数组
}
Map<Integer, ContractListEntity> dataMap = new HashMap<>();
for(int i = 0, length = list.size(); i < length; i++ ){
//获取当前对象
ContractListInfo info = list.get(i);
//获取当前对象的某个属性
int contractID = info.contractID();
//判断对象属性是否在字典中
boolean bool = dataMap.containsKey(contractID);
//如果存在,进行数据的合并
if(bool){
ServerInfoEntity infoEntity =
new ServerInfoEntity(
info.serverID(),
info.serverName(),
info.serverTel());
dataMap.get(contractID).getServerInfos().add(infoEntity);
}else{//没有--添加到字典中
ServerInfoEntity infoEntity =
new ServerInfoEntity(
info.serverID(),
info.serverName(),
info.serverTel());
List<ServerInfoEntity> infoEntities = new ArrayList<>();
infoEntities.add(infoEntity);
ContractListEntity entity =
new ContractListEntity(
info.contractID(),
info.demandType(),
info.consumerID(),
info.consumerName(),
info.consumerTel(),
infoEntities);
dataMap.put(contractID,entity);
}
}
2.数组遍历--该方法前: 相同数据的对象在数组中必须连续在一起
List<ContractListEntity> contractListEntityList = new ArrayList<>();
if (list == null)
return null;
int z = 1;
for (int i = 0, length = list.size(); i < length; i+=z){
z = 1;
List<ServerInfoEntity> serverInfoEntityList = new ArrayList<>();
for (int y = i; ; y++){
if(y == length - 1){
ContractListInfo info = list.get(y);
ServerInfoEntity infoEntity =
new ServerInfoEntity(
info.serverID(),
info.serverName(),
info.serverTel());
serverInfoEntityList.add(infoEntity);
break;
}
else{
if((list.get(y).contractID() == list.get(y+1).contractID())) {
ContractListInfo info = list.get(y);
ServerInfoEntity infoEntity =
new ServerInfoEntity(
info.serverID(),
info.serverName(),
info.serverTel());
serverInfoEntityList.add(infoEntity);
z++;
}else{
ContractListInfo info = list.get(y);
ServerInfoEntity infoEntity =
new ServerInfoEntity(
info.serverID(),
info.serverName(),
info.serverTel());
serverInfoEntityList.add(infoEntity);
break;
}
}
}
ContractListInfo info = list.get(i);
ContractListEntity entity = new ContractListEntity(
info.contractID(),
info.contractCode(),
info.consumerID(),
info.consumerName(),
info.consumerTel(),
serverInfoEntityList
);
contractListEntityList.add(entity);
}
- 数组相同数据的合并(提取)
- 提取数组中相同类别数据,组成新的数组
- JSONArray 合并相同的数据
- SQL合并 合并id相同的数据
- 二维数组相同数组的字段 合并
- 如何合并相同单元格的数据
- 合并相同列的数据(引用)
- GridView中数据相同的单元格合并
- GridView合并相同数据的行
- 将数据集中的相同项目合并
- 页面合并多列相同的数据
- 在一定相同的条件下合并数据的方式(日期相同的数据合并)
- 对二维数组某一个字段相同的数组合并起来
- 同一张表,合并某相同字段,然后提取某一字段数据
- 二维数组相同部分合并
- js 剔除数组中相同的值,合并数组中相同项
- 合并两个含有相同id的对象数组
- 如何将不同数组对象合并,根据相同的key
- 浅谈JAVA设计模式--单列模式
- 【手机+PC】获取用户地理位置、显示获取城市的天气
- 根据16S预测微生物群落功能最全攻略
- SQL执行时间(开销比例)
- Google-gson下载——链接
- 数组相同数据的合并(提取)
- java中存储mysql数据库时间类型【date、time、datetime、timestamp】
- 欢迎使用CSDN-markdown编辑器
- 蜜蜂源财务软件下载 v7.10.2246官方版
- Shell
- sift算法详解
- 关于常用的日期和格式
- arcgis for js 4.x定位控件Locate显示不了的问题
- MyEclipse 2016 CI出现SECURITY ALERT问题解决方案