## 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
`ListOfOutputs(Outputs<T> outputs)`

Method Summary
`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)

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