Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用生成器在java中生成元组_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

使用生成器在java中生成元组

使用生成器在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&

我正在努力掌握新的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> 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;