2
私はJava 8の新機能で、java8のsplitIterator機能を理解しようとしています。Java8のspliteratorでtryAdvanceメソッドから値を返す方法は?
私は以下のコードを書いています。私の要求はget(); getメソッドはitr3から1つの値を返します。それを得ることは可能ですか?そしてどうやって?
public class TestSplitIterator {
static List<Integer> list = new ArrayList<Integer>();
public static void main(String args[]) {
for (int i = 0; i < 100; i++) {
list.add(i);
}
// below method call should return only one value whenever i call it;
get(list);
}
private static int get(List<Integer> list) {
Collections.sort(list, Collections.reverseOrder());
System.out.println(list);
Spliterator<Integer> itr1 = list.spliterator();
Spliterator<Integer> itr2 = itr1.trySplit();
Spliterator<Integer> itr3 = itr2.trySplit();
// i want to return value from itr3 whenever get(List list ic called)
}
}
代わり '一方(itr3.tryAdvance(コレクタ::追加))の:
ORは、例えば、別の
List
を用いてspliterator内のすべての要素を集めます; 'itr3.forEachRemaining(collector :: add);を使うことができます。これは、(特定の' Spliterator'によってオーバーライドされた場合)正確に潜在的により効率的な方法で同じ( 'デフォルト'の実装)または意味的に同じことを行います。 – Holgerええ、私はそれを忘れています。私に思い出させてくれてありがとう。 –
私は、スプライテータから1つの要素を収集するこのタスクでは、 'Consumer'を実装する' Holder'クラスを使用する人がいることを見てきました:class HoldConsumer はコンシューマ {private T t; public void accept(T t){this.t = t; } public T get(){戻りt; }} ' –