将Range <t>转换为List <t>的规范方法是什么?

时间:2016-12-05 17:30:38

标签: java collections guava

有几个选项,但我不确定哪个是标准的。

  • 从下限到上限手动迭代
  • ContiguousSet
  • 别的什么?

1 个答案:

答案 0 :(得分:3)

这不是那么简单,但当然可能。只需创建ContiguousSet<T>ImmutableSortedSet,并使用方法asList(),例如:

Range<Integer> range = Range.closed(1, 5);
ContiguousSet<Integer> ourIntegers = ContiguousSet.create(range, DiscreteDomain.integers());
ImmutableList<Integer> ourIntegersList = ourIntegers.asList();
System.out.println(ourIntegers); // [1‥5]
System.out.println(ourIntegersList); // [1, 2, 3, 4, 5]

请注意,您可能希望坚持使用ContiguousSet(使用列表视图),因为 前者没有实际存储内存中的每个元素,而后者确实存在,这可能是一个大范围的问题。