【发布时间】:2018-09-01 20:14:30
【问题描述】:
我有 2 个数组对象,第一个是复合对象,另一个是简单的对象数组,如果找到匹配,则基于一些比较,创建一个新列表。那将是一个基于条件的过滤列表。我使用 java 1.7 版本做到了这一点,但是如果使用 java-8 使用更少的代码可以实现这一点,请寻求指导。
这是我的代码,它根据条件过滤器创建一个新列表
public static void main(String[] args) throws CloneNotSupportedException {
String[] accountOid = {"1","2","3","4","5","6","7","8"};
AccountHoldCompositeObj[] accts = prepare();
ArrayList<AccountHoldCompositeObj> list = new ArrayList<AccountHoldCompositeObj>();
for (int i = 0; i < accountOid.length; i++) {
for (int j = 0; j < accts.length; j++) {
ObjectId oid = new ObjectId(accountOid[i]);
if (oid.equals(accts[j].getAccountOid())) {
AccountHoldCompositeObj anAccount = (AccountHoldCompositeObj) accts[j].clone();
list.add(anAccount);
break;
}
}
}
list.stream().forEach(s->System.out.println(s));
}
private static AccountHoldCompositeObj[] prepare() {
AccountHoldCompositeObj[] valArr = new AccountHoldCompositeObj[5];
int k =10;
for (int i=0;i<50;i++){
AccountHoldCompositeObj create = new AccountHoldCompositeObj();
create.setAccountId(Integer.toString(k));//some more elements
create.setAccountOid(new ObjectId(i));
valArr[i] = create;
k++;
}
return valArr;
}
我尝试在流中转换数组,然后使用过滤器,但不知何故无法准确比较 2 个不同的元素,即:
-
accountOid[i]ofaccountOid数组(简单数组) -
accts[j].getAccountOid()的AccountHoldCompisiteObj数组(复合 数组)
【问题讨论】:
标签: java arrays java-8 java-stream