src/main/java/io/reactivex/Single.java
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.NONE)
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static <T> Flowable<T> concatArray(SingleSource<? extends T>... sources) {
        return RxJavaPlugins.onAssembly(new FlowableConcatMap(Flowable.fromArray(sources), SingleInternalHelper.toFlowable(), 2, ErrorMode.BOUNDARY));
    }
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.NONE)
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static <T> Flowable<T> concatArray(SingleSource<? extends T>... sources) {
        return RxJavaPlugins.onAssembly(new FlowableConcatMap(Flowable.fromArray(sources), SingleInternalHelper.toFlowable(), 2, ErrorMode.BOUNDARY));
    }
Concatenate the single values, in a non-overlapping fashion, of the SingleSources provided in
an array.
<p>
<img width="640" height="319" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Single.concatArray.png" alt="">
<dl>
<dt><b>Backpressure:</b></dt>
<dd>The returned {@code Flowable} honors the backpressure of the downstream consumer.</dd>
<dt><b>Scheduler:</b></dt>
<dd>{@code concatArray} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>
@param <T> the value type
@param sources the array of SingleSource instances
@return the new Flowable instance
@since 2.0