使用生成器在java中生成元组
我正在努力掌握新的java8流 我需要生成具有某些特征的无限元组流: 元组将有三个使用生成器在java中生成元组,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我正在努力掌握新的java8流 我需要生成具有某些特征的无限元组流: 元组将有三个int值、a、b和c 其中b和c只是计数器,可以在for循环中使用以下计数器: for (int c = 1;; c++) { for (int b = 1; b < c; b++) { ... } } 然后我想生成流: Supplier<Tuple> anyTuple = s -> TupleFactory.next(); Stream<Tuple&
int
值、a
、b
和c
其中b
和c
只是计数器,可以在for
循环中使用以下计数器:
for (int c = 1;; c++) {
for (int b = 1; b < c; b++) {
...
}
}
然后我想生成流
:
Supplier<Tuple> anyTuple = s -> TupleFactory.next();
Stream<Tuple> result = Stream.generate(anyTuple);
Supplier anyTuple=s->TupleFactory.next();
流结果=Stream.generate(anyTuple);
我得到一个:
Lambda表达式的签名与函数接口方法的签名不匹配get()
在我定义供应商的行中
有什么线索吗?首先,清除TupleFactory中的每个
静态
。使用静态是胡说八道
然后,试试这个:
TupleFactory myFactory = new TupleFactory();
Supplier<Tuple> anyTuple = myFactory::next;
您的lambda必须为
T get();
方法,并处理所有此方法参数。但是在本例中,get
方法没有任何参数,因此在s->中不需要s
…
。而不是
Supplier<Tuple> anyTuple = s -> TupleFactory.next();
Supplier anyTuple=s->TupleFactory.next();
使用
supplieranytuple=()->TupleFactory.next();
//^^-表示没有参数
或者更简单的使用
Supplier anyTuple=TupleFactory::next;
此外,请记住,使用基于一的索引被认为是非常不礼貌的。好的绅士总是使用基于零的索引。谢谢,我知道,但问题明确禁止使用everything zero解决方案,尽管它满足条件。
T get();
Supplier<Tuple> anyTuple = s -> TupleFactory.next();
Supplier<Tuple> anyTuple = () -> TupleFactory.next();
// ^^ - means no arguments
Supplier<Tuple> anyTuple = TupleFactory::next;