如您所知-如果没有,请浏览here-Python的slice :
表示法
[1:5] is equivalent to "from 1 to 5" (5 not included)
[1:] is equivalent to "1 to end"
a[-1] last item in the array
a[-2:] last two items in the array
a[:-2] everything except the last two items
我想知道它是通过Java流实现还是以类似于 new 的标准API的其他方式实现,因为有时它确实很有用。
答案 0 :(得分:1)
您可以按以下方式使用IntStream.range
API:
[1:5]相当于“从1到5”(不包括5)
IntStream.range(1, 5).mapToObj(list::get)
.collect(Collectors.toList());
[1:]等同于“ 1至结束”
IntStream.range(1, list.size()) // 0 not included
a [-1]数组中的最后一项
IntStream.range(list.size() - 1, list.size()) // single item
a [-2:]数组中的最后两项
IntStream.range(list.size() - 2, list.size()) // notice two items
a [:-2]除最后两项外的所有内容
IntStream.range(0, list.size() - 2)
通知 ,这些参数位于上下文range(int startInclusive, int endExclusive)
中。
给出一个整数列表
List<Integer> list = List.of(1, 2, 3, 4, 5, 6, 7);
完成以上任何操作以获得切片将类似于指定
List<Integer> slice = IntStream.range(1, 5).mapToObj(list::get)
.collect(Collectors.toList()); // type 'Integer' could depend on type of list
例如,您还可以使用具有类似结构的另一个API List.subList
获得类似的结果
List<Integer> subList = list.subList(1, 5);
以上两者都会输出
[2, 3, 4, 5]