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: the only way to create multiple outputs is to add the same input to the FST multiple times in a row. This is how the FST maps a single input to multiple outputs (e.g. you cannot pass a List<Object> to `Builder.add(org.apache.lucene.util.IntsRef, T)`). If your outputs are longs, and you need at most 2, then use `UpToTwoPositiveIntOutputs` instead since it stores the outputs more compactly (by stealing a bit from each long value).

  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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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)`
    `long` | `ramBytesUsed(Object output)`
    `Object` | `read(DataInput in)`
    `Object` | `readFinalOutput(DataInput in)`
    `void` | `skipFinalOutput(DataInput in)`
    `void` | `skipOutput(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`

    - #### skipOutput

          public void skipOutput(DataInput in)
                          throws IOException

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

    - #### readFinalOutput

          public Object readFinalOutput(DataInput in)
                                 throws IOException

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

    - #### skipFinalOutput

          public void skipFinalOutput(DataInput in)
                               throws IOException

      Overrides:
        `skipFinalOutput` 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)

    - #### ramBytesUsed

          public long ramBytesUsed(Object output)

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

Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.