使用java流API检查列表元素是否是连续的整数范围
给定使用java流API检查列表元素是否是连续的整数范围,java,java-stream,Java,Java Stream,给定var ns=List.of(1,2,3,4) 如何使用java流API检查列表元素是否连续 可以使用以下循环完成此操作: 对于(var i=1;i有很多方法可以解决这个问题,我想创建一个有序列表,并将其与初始列表进行比较,例如: List<Integer> ints = IntStream.iterate(ns.get(0), i -> i + 1) .limit(ns.size()).boxed() .collect(Collectors
var ns=List.of(1,2,3,4)
如何使用java流API检查列表元素是否连续
可以使用以下循环完成此操作:
对于(var i=1;i有很多方法可以解决这个问题,我想创建一个有序列表,并将其与初始列表进行比较,例如:
List<Integer> ints = IntStream.iterate(ns.get(0), i -> i + 1)
.limit(ns.size()).boxed()
.collect(Collectors.toList());
return ns.equals(ints);
有很多方法可以解决这个问题,我想创建一个有序列表,并将其与初始列表进行比较,例如:
List<Integer> ints = IntStream.iterate(ns.get(0), i -> i + 1)
.limit(ns.size()).boxed()
.collect(Collectors.toList());
return ns.equals(ints);
您可以将此问题视为映射列表中两个相邻元素之间的差异,如果任何差异不等于1,则这不是一个连续的列表
final var ns = List.of(1, 2, 3, 4);
IntStream.range(0, ns.size() - 1)
.mapToLong(operand -> ns.get(operand + 1) - ns.get(operand))
.anyMatch(value -> value != 1);
您可以将此问题视为映射列表中两个相邻元素之间的差异,如果任何差异不等于1,则这不是一个连续的列表
final var ns = List.of(1, 2, 3, 4);
IntStream.range(0, ns.size() - 1)
.mapToLong(operand -> ns.get(operand + 1) - ns.get(operand))
.anyMatch(value -> value != 1);
尽管您没有提到输入列表可以按升序或降序连续,但下面的代码可用于使用收集器处理这两种情况。减少(可能不如@YCF_L的解决方案那样优化)
AtomicInteger i=新的AtomicInteger(list.get(0));
函数f=a->(list.get(0)b-f.apply(i)))
.values()
.stream()
.allMatch(n->n==0);
尽管您没有提到输入列表可以按升序或降序连续,但下面的代码可用于使用收集器处理这两种情况。减少(可能不如@YCF\u L的解决方案那样优化)
AtomicInteger i=新的AtomicInteger(list.get(0));
函数f=a->(list.get(0)b-f.apply(i)))
.values()
.stream()
.allMatch(n->n==0);