# ArrayCreatingInputMerger

Artifact: [androidx.work:work-runtime](https://developer.android.com/jetpack/androidx/releases/work) [View Source](https://cs.android.com/search?q=file:androidx/work/ArrayCreatingInputMerger.kt+class:androidx.work.ArrayCreatingInputMerger) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/work#1.0.0)

*** ** * ** ***


```
public final class ArrayCreatingInputMerger extends InputMerger
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.work.InputMerger](https://developer.android.com/reference/androidx/work/InputMerger) ||
|   | ↳ | [androidx.work.ArrayCreatingInputMerger](https://developer.android.com/reference/androidx/work/ArrayCreatingInputMerger) |

*** ** * ** ***

An `https://developer.android.com/reference/androidx/work/InputMerger` that attempts to merge the inputs, creating arrays when necessary. For each input, we look at each key:

- If this is the first time we encountered the key:

  - If it's an array, put it in the output

  - If it's a primitive, turn it into a size 1 array and put it in the output

- Else (we have encountered the key before):

  - If the value type matches the old value type:

    - If they are arrays, concatenate them

    - If they are primitives, turn them into a size 2 array

  - Else if one is an array and the other is a primitive of that type: \* Make a longer array and concatenate them

  - Else throw an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` because the types don't match.

If a value by a key is `null`, it is considered to have type `String`, because it is the only nullable typed allowed in `https://developer.android.com/reference/androidx/work/Data`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/work/ArrayCreatingInputMerger#ArrayCreatingInputMerger()()` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/work/Data` | `https://developer.android.com/reference/androidx/work/ArrayCreatingInputMerger#merge(kotlin.collections.List)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/work/Data> inputs)` Merges a list of `https://developer.android.com/reference/androidx/work/Data` and outputs a single Data object. |

## Public constructors

### ArrayCreatingInputMerger

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/work#1.0.0)

```
public ArrayCreatingInputMerger()
```

## Public methods

### merge

```
public @NonNull Data merge(@NonNull List<@NonNull Data> inputs)
```

Merges a list of `https://developer.android.com/reference/androidx/work/Data` and outputs a single Data object.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/work/Data> inputs` | A list of `https://developer.android.com/reference/androidx/work/Data` |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/work/Data` | The merged output |