Java,集合中有两条数据来自远端接口,把远端接口中的数据,合并到集合对象中?

最近在写代码的时候出现了一个问题,我自己本地接口中,有一部分数据来自于远程接口,拿到是拿到了,我不知道如何他们收集到本地接口中.

代码

public class PriceTest{

@Autowired

private SysResourcesMapper sysResourcesMapper;

// private static final String DAILY_RECORD_FLOW = "/node/daily/:date";//收入=上游收益,价格=上游价格

private static String DAILY_RECORD_FLOW_TWO = "/node/daily/"; //test

private static final Calendar date = Calendar.getInstance();

@Test

public void testMerge() throws Exception {

Map<String,String> map = new HashMap<>();

// 1.设置日期格式,

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

date.setTime(new Date());

date.add(Calendar.DATE,-1);

// 2.拿到日期,拼接到查询参数中

String dateResult = format.format(date.getTime());

DAILY_RECORD_FLOW_TWO = DAILY_RECORD_FLOW_TWO + dateResult;

String result = Utils.pullResourcesTaskByTime(map, DAILY_RECORD_FLOW_TWO);

// 3.拿到数据后转换Java对象

JSONObject all = JSONObject.parseObject(result);

JSONArray nowData = all.getJSONArray("data");

List<SysDailyIncomeFlow> flowList = nowData.toJavaList(SysDailyIncomeFlow.class);

// 4.查询我们需要存放的对象中

SysResources resources = new SysResources();

// 5.

flowList.stream().map((item) -> {

// 获取价格、收入

BigDecimal price = item.getPrice();

BigDecimal income = item.getIncome();

// 上游价格=价格 || 收入=上游收益

resources.setUpstreamPrice(price);

resources.setUpstreamProfit(income);

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

}

}

我现在有一个SysResouces对象里面的数据,是本地接口查询的,但数据中有一个上游收益,上游价格,是来自于Utils工具类响应给我的,我想每个SysResouces原本的这两条数据,替换成接口中来的,然后变成一个集合,那个条件最好可以用uuid限制一下.

谢谢谢谢,这种接口开发流程,我第一次接触,不太懂


回答:

可以再去了解下stream流,

         List<SysResources> = flowList.stream().map((item) -> {

// 获取价格、收入

BigDecimal price = item.getPrice();

BigDecimal income = item.getIncome();

SysResources resources = new SysResources();

resources.setUpstreamPrice(price);

resources.setUpstreamProfit(income);

return resources;

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


回答:

我没看懂问题中,Util 中的数据和 Source 中的对应关系。首先理清他们的对应关系。比如如果是一一对应,找到谁和谁一一对应,然后组装就可以,至于 uuid 这个设置看起来和这两个数据的收集匹配没什么关系。


回答:

大家好,我维护一下我的问题,后面我是这样解决的,我的标题有一点问题,合并到集合对象是没有错,不过应该是查询到的集合对象。

话不多说,开始展示代码

// 1.添加查询条件

HashMap<String, String> map1 = new HashMap<>();

// 2.设置日期格式,

Calendar date = Calendar.getInstance();

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

date.setTime(new Date());

date.add(Calendar.DATE, -1);

//3.使用工具类,调用拉取代码的接口

String result = Utils.pullResourcesTaskByTime(map1, DAILY_RECORD_FLOW + format.format(date.getTime()));

// 4.拿到数据后转换Java对象

JSONObject all = JSONObject.parseObject(result);

JSONArray nowData = all.getJSONArray("data");

List<SysDailyIncomeFlow> flowList = nowData.toJavaList(SysDailyIncomeFlow.class);

// 5. 通过查询拿到资源集合对象

List<SysUnitPriceAllocation> sysUnitPriceAllocations = sysUnitPriceAllocationMapper.selectSysUnitPriceAllocationList(sysUnitPriceAllocation);

// 6.通过uuid做比较便利出来数据

for (SysUnitPriceAllocation unitPriceAllocation : sysUnitPriceAllocations) {

calculation(unitPriceAllocation);

for (SysDailyIncomeFlow sysDailyIncomeFlow : flowList) {

if (unitPriceAllocation.getUuid().equals(sysDailyIncomeFlow.getUuid())) {

unitPriceAllocation.setUpstreamPrice(sysDailyIncomeFlow.getPrice());

unitPriceAllocation.setUpstreamProfit(sysDailyIncomeFlow.getIncome());

// 通过角色计算,每个角色拿到的收益

format(unitPriceAllocation, roleName);

}

}

}

总结:
比较关键的是
第一点 将集合中拉到的数据转为Json数组,注意是数组
第二点 是通过增加for循环便利查询出来的集合对象,再便利接口中的数据,
再通过if判断uuid做比较,把本地查询出来的数据,需要替换的set到每个对象中,
就可以实现此功能了

以上是 Java,集合中有两条数据来自远端接口,把远端接口中的数据,合并到集合对象中? 的全部内容, 来源链接: utcz.com/p/944738.html

回到顶部