org.apache.lucene.util.fst

## Class ListOfOutputs<T>

- java.lang.Object
- - org.apache.lucene.util.fst.Outputs<Object>
  - - org.apache.lucene.util.fst.ListOfOutputs<T>

    public final class ListOfOutputs<T>
    extends Outputs<Object>

Wraps another Outputs implementation and encodes one or more of its output values. You can use this when a single input may need to map to more than one output, maintaining order: pass the same input with a different output by calling `Builder.add(IntsRef,Object)` multiple times. The builder will then combine the outputs using the `Outputs.merge(Object,Object)` method.

The resulting FST may not be minimal when an input has more than one output, as this requires pushing all multi-output values to a final state.

NOTE: this cannot wrap itself (ie you cannot make an FST with List<List<Object>> outputs using this).

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Constructor Summary

Constructors
Constructor and Description
`ListOfOutputs(Outputs<T> outputs)`

### Method Summary

Methods
`Object` `add(Object prefix, Object output)`
`List<T>` `asList(Object output)`
`Object` `common(Object output1, Object output2)`
`Object` `getNoOutput()`
`Object` `merge(Object first, Object second)`
`String` `outputToString(Object output)`
`Object` `read(DataInput in)`
`Object` `readFinalOutput(DataInput in)`
`Object` `subtract(Object object, Object inc)`
`String` `toString()`
`void` `write(Object output, DataOutput out)`
`void` `writeFinalOutput(Object output, DataOutput out)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### ListOfOutputs

    public ListOfOutputs(Outputs<T> outputs)

### Method Detail

#### common

    public Object common(Object output1,
                Object output2)

Specified by:
  `common` in class `Outputs<Object>`

#### subtract

    public Object subtract(Object object,
                  Object inc)

Specified by:
  `subtract` in class `Outputs<Object>`

#### add

    public Object add(Object prefix,
             Object output)

Specified by:
  `add` in class `Outputs<Object>`

#### write

    public void write(Object output,
             DataOutput out)
               throws IOException

Specified by:
  `write` in class `Outputs<Object>`
Throws:
  `IOException`

#### writeFinalOutput

    public void writeFinalOutput(Object output,
                        DataOutput out)
                          throws IOException

Overrides:
  `writeFinalOutput` in class `Outputs<Object>`
Throws:
  `IOException`

#### read

    public Object read(DataInput in)
                throws IOException

Specified by:
  `read` in class `Outputs<Object>`
Throws:
  `IOException`

#### readFinalOutput

    public Object readFinalOutput(DataInput in)
                           throws IOException

Overrides:
  `readFinalOutput` in class `Outputs<Object>`
Throws:
  `IOException`

#### getNoOutput

    public Object getNoOutput()

Specified by:
  `getNoOutput` in class `Outputs<Object>`

#### outputToString

    public String outputToString(Object output)

Specified by:
  `outputToString` in class `Outputs<Object>`

#### merge

    public Object merge(Object first,
               Object second)

Overrides:
  `merge` in class `Outputs<Object>`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### asList

    public List<T> asList(Object output)