有効なJava 2nd Edによると、varargsを許可するメソッドシグネチャを書きたいが、コンパイル時に最低限の要素しか持たないようにするには、このようにメソッドシグネチャを記述する必要があります私は1のストリームを作成しています、特にので、Java 8ストリームとvarargs
はpublic void something(String required, String ... additional) {
Stream<String> allParams =
Stream.concat(Stream.of(required), Stream.of(additional));
//... do what you want to do
}
これは本当に洗練無駄な感じ:私はこれらすべての要素をストリーミングする場合は
public void something(String required, String ... additional) {
//... do what you want to do
}
、私はこのような何かをやってきましたおよびconcatenaそれを別のものにつないでください。これを行うためのよりクリーンな方法がありますか?
'Stream.concat'は、私には罰金です。..短くて簡潔ですが、データのコピーを作成しません。あなたはいくつかの追加のラッパーオブジェクトを作成しています。それだけです。 IMOは本当に間違っています。 Javaでプログラミングするには、ちょっとした物を作る必要があります。 'Stream.concat'は' ArrayList'などでそれらをマージするよりもずっと前です。 – Radiodef
私はRadiodefに同意します。もし実際にあなたがSpliterator 'の独自の実装を行い、' StreamSupport.stream(spliterator、parallel) 'と一緒に使うことができたら、それはもっと読みやすく効率的になります。 –