迭代Collection <list <integer>&gt; </list <integer>

时间:2013-12-18 09:33:14

标签: java collections guava

我使用Guava库生成整数排列123

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中提取排列?

4 个答案:

答案 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();
    }