我不明白action.accept(val)是做什么的,我已经搜索过了,我知道必须这样做,只是不知道为什么。
下面是一个我不明白的简单示例:
public class CachedSpliterator <T> extends Spliterators.AbstractSpliterator
{
Spliterator<T> spliterator;
int index;
ArrayList<T> cache;
public CachedSpliterator(Spliterator<T> spliterator, ArrayList<T> cache) {
super(spliterator.characteristics(), 0);
this.spliterator=spliterator;
index=0;
this.cache=cache;
}
public boolean tryAdvance(Consumer action){
if(index<cache.size()){
action.accept(cache.get(index));
index++;
return true;
}
else{
return spliterator.tryAdvance(val->{
cache.add(val);
index++;
action.accept(val);
});
}
}
例如,在这段代码中,我理解我们有一个消费者,它从一个源(在本例中是spliterator)消费每个元素,每个元素都必须被动作接受。所以在我看来,操作是cache.add(val)和变量index的增量,我不明白为什么最后一行(action.accept(val))必须写出来。谢谢.
动作
是对数据执行的用户定义函数,用于CachedSpliterator
的用户。增量和添加到缓存是该类内部逻辑的一部分。
例如:
CachedSpliterator spliterator = new CachedSpliterator(...);
spliterator.tryAdvance(item -> {
// Will execute this code on every item from the source
// Can perform any logic here, like save to a database
db.save(item);
});
描述 (Description) val( val )方法设置每个匹配元素的输入值。 如果在单选按钮,复选框或选择选项上调用此方法,则它将检查或选择传递的值。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>selector</i>.val( val ) 参数 (Parameters) 以下是此方法使用的所有参数的说明 - val - 如果在“input”上调用它,但是如果在“s
这是在我编写自定义< code>Spliterator时出现的。我知道我应该覆盖< code>estimateSize,如果我知道大小,即使是一个近似值。通常,我会的。但是还有< code>getExactSizeIfKnown并且我知道它的默认实现: 现在,假设我正在处理一个(我知道它已经存在,这不是重点)。我应该覆盖或还是两者兼而有之? 在内部,我猜<code>getExactSizeIfKn
问题内容: 我在理解Java 8中的接口时遇到了麻烦,尤其是在与and 接口有关的地方。我的问题是我根本无法理解和接口的是,作为一个结果,接口仍然有些模糊了我。 和和到底是什么,我如何使用它们?如果我愿意写我自己或(和可能是我自己在这个过程中),我应该怎样做和不能做? 我阅读了一些分散在网络上的示例,但是由于此处的所有内容仍然是新内容并且随时可能更改,因此示例和教程仍然非常稀疏。 问题答案: 几乎
描述 (Description) val( )方法获取第一个匹配元素的输入值。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>selector</i>.val( ) 参数 (Parameters) 以下是此方法使用的所有参数的说明 - NA 例子 (Example) 下面的示例将设置第二段中第一个输入框的HTML内容 - <html> <head> <titl
哪些流操作使用、和拆分器特性?它们在这些操作中如何发挥作用? 我不是问这些标志是什么,这在文档中很容易找到。我在问哪些操作使用它们以及如何使用它们。
为了试图深入理解Java流和spliterator,我有一些关于spliterator特性的微妙问题: Q1:与(不带参数的stream.of()) :已沉降,大小 :沉降的、不可变的、有大小的、有序的 为什么不具有相同的特性?请注意,当它与stream.concat()结合使用时(特别是没有)会产生影响。我想说不仅应该具有不可变和有序性,而且还应该具有DISTINCT和nonnull。只有一个参