我使用Guava库生成整数排列1
,2
和3
。
Collection<List<Integer>> vehCombinations = Collections2.orderedPermutations(vehicles);
接下来我需要遍历vehCombinations
并检查每个约束的约束:
for (int j=0; j<vehCombinations.size(); j++)
{
List<Integer> veh = vehCombinations.get(i);
}
vehCombinations.get(i)
是不允许的。
那么,如何从vehCombinations
中提取排列?
答案 0 :(得分:5)
使用foreach,如下所示:
for(List<Integer> veh : vehCombinations){
veh.doSomething();
}
答案 1 :(得分:4)
您可以使用for each语法:
for(List<Integer> veh : vehCombinations) {
// Do stuff
}
答案 2 :(得分:3)
使用
for(List<Integer> veh : vehCombinations){
// write your logic
}
有时候如果你需要编写自己的集合扩展。也许 如果要在将元素添加到列表时添加特殊行为, 或者你想写一个实际上由数据库支持的Iterable 查询。 Guava提供了许多实用程序来简化这些任务 为了你,为了我们。
看看这些东西
<强> Forwarding Decorators 强>
在那看看
1. PeekingIterator
List<E> result = Lists.newArrayList();
PeekingIterator<E> iter = Iterators.peekingIterator(source.iterator());
while (iter.hasNext()) {
E current = iter.next();
while (iter.hasNext() && iter.peek().equals(current)) {
// skip this duplicate element
iter.next();
}
result.add(current);
}
2. AbstractIterator
public static Iterator<String> skipNulls(final Iterator<String> in) {
return new AbstractIterator<String>() {
protected String computeNext() {
while (in.hasNext()) {
String s = in.next();
if (s != null) {
return s;
}
}
return endOfData();
}
};
}
3. AbstractSequentialIterator
Iterator<Integer> powersOfTwo = new AbstractSequentialIterator<Integer>(1) { // note the initial value!
protected Integer computeNext(Integer previous) {
return (previous == 1 << 30) ? null : previous * 2;
}
};
答案 3 :(得分:1)
或者你可以使用iterator:
Iterator<List<Integer>> pageIterator = vehCombinations.iterator();
while (pageIterator.hasNext()) {
List<Integer> list = (List<Integer>) pageIterator.next();
}