情况如下:给出两个列表[A,B,C,D]和[Ob,Od,Oa,Oc](对象O有参数A,B,C或D)
首先列出的是根据具体情况排序(如果A是产品,它是最便宜的,D是最贵的)。我们想以这种方式做一个2-for循环:
List products = [A,B,C,D];
List shops = [Ob,Od,Oa,Oc];
int k=0;
for(Object i : products)
for(Object o : shops)
// 1st loop i is A, and o is Ob
consume(A,Ob) // We are reducing number of A depending on Ob requirement
k++; // 1st loop k = 0;
对于Ob,我们知道B比A好。因此,在第一个循环中,我想在A和B之间切换,所以我的列表变为[B,A,C,D]。 / p>
List products = [B,A,C,D]; // during the first loop, this list was shuffled.
List shops = [Ob,Od,Oa,Oc];
int k=0;
for(Object i : products)
for(Object o : shops)
// 2nd loop i is B, and o is Od --> B because we shifted
consume(A,Ob) // We are reducing number of A depending on Ob requirement
k++; // 2nd loop k = 1;
在最后一个循环中,我们应该有[B,D,A,C]。
当然,在并行化系统中执行此操作,每个列表[A,B,C,D]组合一个线程,然后返回最佳解决方案是可行的,但很难。
无论如何,在Java中是否要重新排列我们正在迭代的列表?