从Guava ImmutableTable派生的视图的迭代顺序

时间:2015-08-12 10:12:37

标签: java collections iteration guava

来自guava不可变表的派生视图是否在原始提供的表中保留了插入顺序?

例如,请考虑“原始提供的表格”,如下所示。

ImmutableTable<String, String, String> table = ImmutableTable.<String, String, String>builder()
.put("r1", "c1", "v1")
.put("r2", "c1", "v2")
.put("r3", "c1", "v3")
.put("r4", "c2", "v4")
.build();

现在如果我操作

table.column("c1").entrySet().iterator()

迭代会在插入顺序“原始提供的表”中提供结果吗?

注意:根据documentation迭代,从ArrayTable派生的视图会保留原始表中的插入顺序。我使用的用例更倾向于使用不可变表。

1 个答案:

答案 0 :(得分:1)

是。请参阅JavaDoc of ImmutableTable

  

具有可靠的用户指定迭代顺序的不可变表。

加:

  • ImmutableTable.column()JavaDoc中返回ImmutableMap ,其中包含可靠的用户指定迭代顺序
  • 对于不可变数据结构,“迭代顺序”应该是我认为的行为。
  • 对于“用户指定的迭代顺序”,ImmutableTable.Builder#orderColumnsBy可以实现。