T
- 列元素的元素类型public class TableData<T> extends Object
文件名:TableData.java
用途: 提供对列表型数据进行处理的方法。添加列元素时,可设置是否检查数据量的一致性,若打开该设置,则 在返回元素时,当存在列元素数据个数与其他列不一致时,则会抛出一个异常。
编码时间:2020年12月17日上午8:24:47
修改时间:2022年3月29日 上午8:39:59
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_TITLE_NAME
定义默认的列名称
|
protected int |
longColumnSize
指向列表中最长列数据个数
|
protected int |
shortColumnSize
指向列表中最短列数据个数
|
protected LinkedHashMap<String,List<Optional<T>>> |
tableMap
存储列表元素数据
|
Constructor and Description |
---|
TableData()
构造对象
|
TableData(Collection<String> columnNameList)
构造对象,并初始化列名称集合
|
TableData(Map<String,? extends Collection<T>> tableMap)
构造对象,并初始化列表的数据
|
TableData(TableData<T> tableData)
根据已有的表格数据构造对象
|
Modifier and Type | Method and Description |
---|---|
TableData<T> |
addColumn(String columnName,
Collection<T> columnDataList)
用于根据列表名称,存储一列元素数据,多次调用该方法时,将在相应列后继续添加数据
|
TableData<T> |
addRow(List<T> rowDataList)
按照行存储元素,若元素个数少于当前表中存储的元素个数时,则使用
Optional.empty() 代替;若元素
个数超出当前表中存储的元素个数时,则抛出异常 |
TableData<T> |
addTable(Map<String,? extends Collection<T>> tableMap)
用于添加一组列数据
|
TableData<T> |
addTable(TableData<T> table)
用于存储其他表类对象的数据
|
TableData<T> |
addTitle(Collection<String> columnNameList)
用于向表中添加一列列名,若列名重复,则不进行添加
|
TableData<T> |
addTitle(String columnName)
用于向表中添加一个列名,若列名重复,则不进行添加
|
List<Optional<T>> |
clearColumn(String columnName)
用于清空指定列的数据集合,但不删除该列
|
void |
columnForEach(BiConsumer<String,List<Optional<T>>> action)
用于以列的形式进行ForEach循环,其key为列名称,value为列中的所有数据
|
boolean |
containsColumn(String columnName)
用于判断当前表中是否存在指定的列名
|
boolean |
equals(Object obj) |
List<Optional<T>> |
getColumnList(String columnName)
用于返回指定列的所有数据
|
List<String> |
getColumnName()
用于返回列名称
|
LinkedHashMap<String,List<Optional<T>>> |
getData(int startRowIndex,
int endRowIndex,
List<String> columnNameList)
用于获取指定列与指定列的数据,并以传入的字段顺序,将获取到的每列数据进行存储
|
LinkedHashMap<String,List<Optional<T>>> |
getData(int startRowIndex,
int endRowIndex,
String... columnNames)
用于获取指定列与指定列的数据,并以传入的字段顺序,将获取到的每列数据进行存储
|
int |
getFieldIndex(String fieldName)
根据列名称返回列下标,若列名不存在,则返回-1
|
String |
getFieldName(int index)
用于根据列下标返回列字段的名称,下标从0开始计算,即0表示第1列。 若下标不存在,则返回空串
|
List<Optional<T>> |
getFirstColumn()
用于返回第一列的所有数据
|
Optional<T> |
getFirstData()
用于获取第一列第一条数据
|
List<Optional<T>> |
getFirstRowData()
用于获取表中第一行的所有数据
|
int |
getListSize(String columnName)
返回指定列的数据个数
|
int |
getLongColumnSize()
返回列表中最长列的数据个数
|
List<Optional<T>> |
getRowData(int rowIndex)
该方法用于返回指定下标的一行元素集合,其下标传入规则可参考
getData(int, int, List) |
List<List<Optional<T>>> |
getRowData(int startIndex,
int endIndex)
用于根据行下标,获取多行数据,。其下标传入规则可参考
getData(int, int, List) |
int |
getShortColumnSize()
返回列表中最短列的数据个数
|
Optional<T> |
getSingleData(int columnIndex,
int rowIndex)
用于根据列列和所在行数,返回单个数据
|
Optional<T> |
getSingleData(String columnName,
int rowIndex)
用于根据列名称和所在行数,返回单个数据
|
TableData<T> |
getTable(int... columnIndexs)
该方法用于根据指定的列下标,在当前表格对象中,提取对应的列,组成一个新的表格对象,并进行返回
|
TableData<T> |
getTable(String... columnNames)
该方法用于根据指定的列名称,在当前表格对象中,提取对应的列,组成一个新的表格对象,并进行返回
|
int |
hashCode() |
boolean |
isEmpty()
用于判断当前表中是否包含数据,若表中只有标题,无相应的内容,也视为无数据
|
boolean |
isExamine()
返回当前是否严格校验数据个数
|
boolean |
isFieldIndex(int index)
返回传入的列下标是否存在于当前表中,其列下标从0开始计算
|
boolean |
isFieldName(String fieldName)
返回传入列名称是否存在与当前表中
|
List<Optional<T>> |
removeColumn(String columnName)
用于移除指定列的数据集合
|
Stream<List<Optional<T>>> |
rowStream()
用于根据表中最大行的行数,以流的形式返回表中的所有行数据。
|
Stream<List<Optional<T>>> |
rowStream(int startIndex,
int endIndex)
用于根据指定的行下标,以流的形式,按行返回数据。
|
void |
setExamine(boolean isExamine)
用于设置是否对传入的数据列表的个数进行严格校验,即在调用
getData(int, int, List) 等获取数据的方法时,
若数据个数与初次传入的个数不符且需要严格校验,则抛出异常;反之,则直接进行存储 |
String |
toString() |
protected LinkedHashMap<String,List<Optional<T>>> tableMap
protected int shortColumnSize
protected int longColumnSize
public static final String DEFAULT_TITLE_NAME
public TableData()
public TableData(Map<String,? extends Collection<T>> tableMap)
tableMap
- 列表数据public TableData(TableData<T> tableData)
tableData
- 表格数据对象public TableData(Collection<String> columnNameList)
columnNameList
- 列名称集合public void setExamine(boolean isExamine)
getData(int, int, List)
等获取数据的方法时,
若数据个数与初次传入的个数不符且需要严格校验,则抛出异常;反之,则直接进行存储isExamine
- 是否严格校验数据个数public boolean isExamine()
public boolean isEmpty()
public boolean containsColumn(String columnName)
columnName
- 列名称public TableData<T> addColumn(String columnName, Collection<T> columnDataList)
columnName
- 列表名称columnDataList
- 数据集合IllegalDataException
- 传入元素集合为null时抛出的异常public TableData<T> addTable(Map<String,? extends Collection<T>> tableMap)
tableMap
- 数据列组public TableData<T> addTable(TableData<T> table)
table
- 表类对象public TableData<T> addTitle(Collection<String> columnNameList)
columnNameList
- 列名集合IllegalDataException
- 未添加类名称时抛出的异常public TableData<T> addTitle(String columnName)
columnName
- 列名名称IllegalDataException
- 未添加类名称时抛出的异常public TableData<T> addRow(List<T> rowDataList)
Optional.empty()
代替;若元素
个数超出当前表中存储的元素个数时,则抛出异常rowDataList
- 行数据集合IllegalDataException
- 未存储列名时或添加的元素超出列数量时抛出的异常public int getListSize(String columnName)
columnName
- 列名称public int getLongColumnSize()
public int getShortColumnSize()
public List<Optional<T>> clearColumn(String columnName)
columnName
- 列名称IllegalDataException
- 列名称不存在或未传入时抛出的异常public List<Optional<T>> removeColumn(String columnName)
columnName
- 列名称IllegalDataException
- 列名称不存在或未传入时抛出的异常public String getFieldName(int index)
index
- 列下标public int getFieldIndex(String fieldName)
fieldName
- 列名public boolean isFieldIndex(int index)
index
- 列下标public boolean isFieldName(String fieldName)
fieldName
- 列名称public List<Optional<T>> getColumnList(String columnName)
columnName
- 列名称public LinkedHashMap<String,List<Optional<T>>> getData(int startRowIndex, int endRowIndex, String... columnNames)
方法接收数据的起始下标与结束下标,并根据该组下标,获取结果,将其转换为 字符串的形式进行返回,另外,行下标从1开始遍历,下标传入0或者1都表示获取第1行元素,且下标允许传入负数, 表示反序遍历。其可能会出现以下情况:
注意:调用方法后,下标传入的负数实则会根据数据的个数,转换为一个正数 进行传参,即假设数据中有100个元素,下标传入-2时,会将其转换为99(倒数第二行)进行处理。 若负数下标的绝对值超过数据的总数,则表示获取第一行元素。另外,获取数据的数据采用包含两边的形式 存储数据,及传入起始下标为2,结束下标为4时,表示获取指定列2-4行的数据
startRowIndex
- 起始下标endRowIndex
- 结束下标columnNames
- 列名称组,可传入多个值IllegalDataException
- 需要严格检查且存在列数据不同时抛出的异常public LinkedHashMap<String,List<Optional<T>>> getData(int startRowIndex, int endRowIndex, List<String> columnNameList)
方法接收数据的起始下标与结束下标,并根据该组下标,获取结果,将其转换为 字符串的形式进行返回,另外,行下标从1开始遍历,下标传入0或者1都表示获取第1行元素,且下标允许传入负数, 表示反序遍历。其可能会出现以下情况:
注意:调用方法后,下标传入的负数实则会根据数据的个数,转换为一个正数 进行传参,即假设数据中有100个元素,下标传入-2时,会将其转换为99(倒数第二行)进行处理。 若负数下标的绝对值超过数据的总数,则表示获取第一行元素。另外,获取数据的数据采用包含两边的形式 存储数据,及传入起始下标为2,结束下标为4时,表示获取指定列2-4行的数据
startRowIndex
- 起始下标endRowIndex
- 结束下标columnNameList
- 列名称集合IllegalDataException
- 需要严格检查且存在列数据不同时抛出的异常public List<List<Optional<T>>> getRowData(int startIndex, int endIndex)
getData(int, int, List)
startIndex
- 起始行下标endIndex
- 结束行下标IllegalDataException
- 需要严格检查且存在列数据不同时抛出的异常public List<Optional<T>> getRowData(int rowIndex)
getData(int, int, List)
rowIndex
- 行下标IllegalDataException
- 需要严格检查且存在列数据不同时抛出的异常public Optional<T> getSingleData(String columnName, int rowIndex)
columnName
- 列名称rowIndex
- 行下标public Optional<T> getSingleData(int columnIndex, int rowIndex)
columnIndex
- 列下标rowIndex
- 行下标public TableData<T> getTable(int... columnIndexs)
columnIndexs
- 列下标数组public TableData<T> getTable(String... columnNames)
columnNames
- 列名称数组public Stream<List<Optional<T>>> rowStream(int startIndex, int endIndex)
在流中,每个元素为一行数据集合,以List
的形式进行存储。下标允许传入负数,其
规则可参考getData(int, int, List)
startIndex
- 起始下标endIndex
- 结束下标IllegalDataException
- 需要严格检查且存在列数据不同时抛出的异常public Stream<List<Optional<T>>> rowStream()
注意:调用该方法时,无论是否严格检查元素列个数,其均能返回所有行的数据,
并且不会改变在setExamine(boolean)
中指定的值。若列的长度不等,则按行
返回时,不存在的的列数据按Optional.empty()
进行返回
public void columnForEach(BiConsumer<String,List<Optional<T>>> action)
action
- 数据处理方式Copyright © 2024. All rights reserved.