我有一个对象列表:
{
"rn": "14",
"time": "2020-06-16 16:47:55",
"id": 42332392988,
"termname": "S1160AFB",
"type": "100",
"trancode": "110",
"pan": "4790729949581839",
"amount": "360.96",
"approvalcode": "44444"
},
{
"rn": "15",
"time": "2020-06-16 16:48:55",
"id": 42330308379,
"termname": "S1160AFB",
"type": "100",
"trancode": "110",
"pan": "4149510064617121",
"amount": "360.96",
"approvalcode": "55555"
},
{
"rn": "13",
"time": "2020-06-16 16:49:11",
"id": 42332530886,
"termname": "S1160AFB",
"type": "420",
"trancode": "110",
"pan": "4790729949581839",
"amount": "360.96",
"approvalcode": "44444"
}
一个任务:
- 查找具有相同批准码的对象。(它是唯一的,只能重复2次)
- 如果有两个对象,并且第二个对象的日期晚于类型字段中的第一个对象,则类型字段的值为 420。然后从列表中删除这两个对象。
我的决定:
- 我按字段批准代码和日期对列表进行排序。
List<Transaction> filteredTrans = transResponse.getTransaction().stream().sorted(Comparator.comparing(Transaction::approvalcode).thenComparing(Transaction::getTime))
.collect(Collectors.toList());
- 我比较两个对象并删除它们是否满足我需要的条件。
int j = 1;
for (int i=0; i<filteredTrans.size()-1; i++) {
if (filteredTrans.get(i).getApprovalcode().equals(filteredTrans.get(j).getApprovalcode()) && filteredTrans.get(j).getType().equals("420")) {
filteredTrans.remove(i);
filteredTrans.remove(j);
j++;
}
但第二部分对我来说看起来很糟糕。建议,请,适当的决定。
1 个回答