我有以下设置。

Table<Integer, Integer, Float> store = HashBasedTable.create();

int i = 0, j = 0;

for (List<String> stack_i : stacks) {
  j = 0;

  for (String entry_j : stack_i) {
    Float alpha = doSomeMagic(entry_j, token);
    if (alpha != null)
      store.put(i, j, alpha);
    j++;
  }
  i++;
}

if (store.cellSet().size() > 0) {
  for (Table.Cell<Integer, Integer, Float> cell : store.cellSet()) {
    if (cell.getValue() > max) {
      max = cell.getValue();
      maxchainIndex = cell.getRowKey();
    }
  }
}


我遇到的问题是出现以下JVM错误:


严重:java.lang.IllegalAccessError:试图访问com.google.common.collect.Iterators.emptyModifiableIterator()Ljava / util / Iterator方法;来自com.google.common.collect.StandardTable $ CellIterator类
在com.google.common.collect.StandardTable $ CellIterator。(StandardTable.java:310)
在com.google.common.collect.StandardTable $ CellIterator。(StandardTable.java:306)
在com.google.common.collect.StandardTable $ CellSet.iterator(StandardTable.java:280)


错误发生在第

for(Table.Cell<Integer,Integer,Float> cell:store.cellSet())


我看不到我在做什么错。我已经检查一下,商店里至少有1件东西。

最佳答案

对我来说很好,我能够成功运行以下命令。您是否可以在没有任何其他元素的情况下运行它,以消除与for循环无关的任何有趣的事情?

Table<Integer, Integer, Double> abc = HashBasedTable.create();
abc.put(1, 1, 10d);
for (Table.Cell<Integer, Integer, Double> x : abc.cellSet()) {
    System.out.println(x.toString());
}

10-04 17:06