Class TripleTable<L,M,R>

java.lang.Object
org.miaixz.bus.core.center.map.TripleTable<L,M,R>
Type Parameters:
L - 左值类型
M - 中值类型
R - 右值类型
All Implemented Interfaces:
Serializable

public class TripleTable<L,M,R> extends Object implements Serializable
三值表结构,可重复 用于提供三种值相互查找操作 查找方式为indexOf方式遍历查找,数据越多越慢。
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • TripleTable

      public TripleTable(List<Triplet<L,M,R>> triples)
      构造
      Parameters:
      triples - 三元组列表
    • TripleTable

      public TripleTable(int size)
      构造
      Parameters:
      size - 初始容量
    • TripleTable

      public TripleTable(List<L> lefts, List<M> middles, List<R> rights)
      Parameters:
      lefts - 左列表
      middles - 中列表
      rights - 右列表
  • Method Details

    • getLeftByMiddle

      public L getLeftByMiddle(M mValue)
      通过中间值,查找左边值 如果有多个重复值,只返回找到的第一个值
      Parameters:
      mValue - 中间值
      Returns:
      左边值,未找到返回null
    • getLeftByRight

      public L getLeftByRight(R rValue)
      通过右值,查找左边值 如果有多个重复值,只返回找到的第一个值
      Parameters:
      rValue - 右值
      Returns:
      左边值,未找到返回null
    • getMiddleByLeft

      public M getMiddleByLeft(L lValue)
      通过左值,查找中值 如果有多个重复值,只返回找到的第一个值
      Parameters:
      lValue - 左值
      Returns:
      中值,未找到返回null
    • getMiddleByRight

      public M getMiddleByRight(R rValue)
      通过右值,查找中值 如果有多个重复值,只返回找到的第一个值
      Parameters:
      rValue - 右值
      Returns:
      中值,未找到返回null
    • getLeft

      public L getLeft(int index)
      获取指定index对应的左值
      Parameters:
      index - 索引
      Returns:
      左值
    • getMiddle

      public M getMiddle(int index)
      获取指定index对应的中值
      Parameters:
      index - 索引
      Returns:
      中值
    • getRight

      public R getRight(int index)
      获取指定index对应的右值
      Parameters:
      index - 索引
      Returns:
      右值
    • getRightByLeft

      public R getRightByLeft(L lValue)
      通过左值,查找右值 如果有多个重复值,只返回找到的第一个值
      Parameters:
      lValue - 左值
      Returns:
      右值,未找到返回null
    • getRightByMiddle

      public R getRightByMiddle(M mValue)
      通过中间值,查找右值 如果有多个重复值,只返回找到的第一个值
      Parameters:
      mValue - 中间值
      Returns:
      右值,未找到返回null
    • containLeft

      public boolean containLeft(L left)
      是否含有指定左元素
      Parameters:
      left - 左元素
      Returns:
      是否含有
    • containMiddle

      public boolean containMiddle(M middle)
      是否含有指定中元素
      Parameters:
      middle - 中元素
      Returns:
      是否含有
    • containRight

      public boolean containRight(R right)
      是否含有指定右元素
      Parameters:
      right - 右元素
      Returns:
      是否含有
    • indexOfLeft

      public int indexOfLeft(L left)
      获取指定左元素的索引
      Parameters:
      left - 左元素
      Returns:
      索引,未找到返回-1
    • indexOfMiddle

      public int indexOfMiddle(M middle)
      获取指定中元素的索引
      Parameters:
      middle - 中元素
      Returns:
      索引,未找到返回-1
    • indexOfRight

      public int indexOfRight(R right)
      获取指定右元素的索引
      Parameters:
      right - 右元素
      Returns:
      索引,未找到返回-1
    • getByLeft

      public Triplet<L,M,R> getByLeft(L lValue)
      通过左值查找三元组(所有值)
      Parameters:
      lValue - 左值
      Returns:
      三元组(所有值)
    • getByMiddle

      public Triplet<L,M,R> getByMiddle(M mValue)
      通过中值查找三元组(所有值)
      Parameters:
      mValue - 中值
      Returns:
      三元组(所有值)
    • getByRight

      public Triplet<L,M,R> getByRight(R rValue)
      通过右值查找三元组(所有值)
      Parameters:
      rValue - 右值
      Returns:
      三元组(所有值)
    • getLefts

      public List<L> getLefts()
      获取左列表,不可修改
      Returns:
      左列表
    • getMiddles

      public List<M> getMiddles()
      获取中列表,不可修改
      Returns:
      中列表
    • getRights

      public List<R> getRights()
      获取右列表,不可修改
      Returns:
      右列表
    • size

      public int size()
      长度
      Returns:
      this
    • put

      public TripleTable<L,M,R> put(L lValue, M mValue, R rValue)
      加入值
      Parameters:
      lValue - 左值
      mValue - 中值
      rValue - 右值
      Returns:
      this
    • setLeft

      public TripleTable<L,M,R> setLeft(int index, L lValue)
      修改指定index对应的左值
      Parameters:
      index - 索引
      lValue - 左值
      Returns:
      this
    • setMiddle

      public TripleTable<L,M,R> setMiddle(int index, M mValue)
      修改指定index对应的中值
      Parameters:
      index - 索引
      mValue - 中值
      Returns:
      this
    • setRight

      public TripleTable<L,M,R> setRight(int index, R rValue)
      修改指定index对应的右值
      Parameters:
      index - 索引
      rValue - 左值
      Returns:
      this
    • clear

      public TripleTable<L,M,R> clear()
      清空
      Returns:
      this
    • remove

      public TripleTable<L,M,R> remove(int index)
      移除值
      Parameters:
      index - 序号
      Returns:
      this