All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.landawn.abacus.util.DataSet Maven / Gradle / Ivy

Go to download

A general programming library in Java/Android. It's easy to learn and simple to use with concise and powerful APIs.

There is a newer version: 5.3.16
Show newest version
/*
 * Copyright (c) 2015, Haiyang Li.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.landawn.abacus.util;

import java.io.File;
import java.io.OutputStream;
import java.io.Writer;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.Collector;

import com.landawn.abacus.annotation.Beta;
import com.landawn.abacus.exception.UncheckedIOException;
import com.landawn.abacus.util.NoCachingNoUpdating.DisposableObjArray;
import com.landawn.abacus.util.Tuple.Tuple2;
import com.landawn.abacus.util.Tuple.Tuple3;
import com.landawn.abacus.util.u.Optional;
import com.landawn.abacus.util.stream.Stream;

/**
 *
 * @author Haiyang Li
 * @see com.landawn.abacus.util.DataSetUtil
 * @see com.landawn.abacus.util.Build.DataSetBuilder
 * @see com.landawn.abacus.jdbc.JdbcUtil
 * @see com.landawn.abacus.util.CSVUtil
 * @see com.landawn.abacus.util.Fn.Factory
 * @see com.landawn.abacus.util.Clazz
 * @see com.landawn.abacus.util.N#newEmptyDataSet()
 * @see com.landawn.abacus.util.N#newEmptyDataSet(Collection)
 * @see com.landawn.abacus.util.N#newDataSet(Map)
 * @see com.landawn.abacus.util.N#newDataSet(Collection)
 * @see com.landawn.abacus.util.N#newDataSet(Collection, Collection)
 * @see com.landawn.abacus.util.N#newDataSet(String, String, Map)
 * @since 0.8
 */
public interface DataSet {

    //    /**
    //     * Returns the entity name associated with the query.
    //     *
    //     * @return
    //     */
    //    String entityName();
    //
    //    /**
    //     * Returns the target entity class associated with the query.
    //     *
    //     * @return
    //     */
    //     Class entityClass();

    /**
     * Return the column name list in this DataSet.
     *
     * @return
     */
    ImmutableList columnNameList();

    /**
     *
     * @param columnIndex
     * @return
     */
    String getColumnName(int columnIndex);

    /**
     *
     * @param columnName
     * @return -1 if the specified columnName is not found
     */
    int getColumnIndex(String columnName);

    /**
     * -1 is set to the element in the returned array if the mapping column name is not included in this DataSet.
     *
     * @param columnNames
     * @return
     */
    int[] getColumnIndexes(Collection columnNames);

    /**
     *
     * @param columnName
     * @return true, if successful
     */
    boolean containsColumn(String columnName);

    /**
     * Check if this DataSet contains all the specified columns.
     *
     * @param columnNames
     * @return true if all the specified columns are included in the this DataSet
     */
    boolean containsAllColumns(Collection columnNames);

    /**
     *
     * @param columnName
     * @param newColumnName
     */
    void renameColumn(String columnName, String newColumnName);

    /**
     *
     * @param oldNewNames
     */
    void renameColumns(Map oldNewNames);

    /**
     *
     * @param 
     * @param columnName
     * @param func
     * @throws E the e
     */
     void renameColumn(String columnName, Throwables.Function func) throws E;

    /**
     *
     * @param 
     * @param columnNames
     * @param func
     * @throws E the e
     */
     void renameColumns(Collection columnNames, Throwables.Function func) throws E;

    /**
     *
     * @param 
     * @param func
     * @throws E the e
     */
     void renameColumns(Throwables.Function func) throws E;

    /**
     *
     * @param columnName
     * @param newPosition
     */
    void moveColumn(String columnName, int newPosition);

    /**
     *
     * @param columnNameNewPositionMap
     */
    void moveColumns(Map columnNameNewPositionMap);

    /**
     * Swap the positions of the two specified columns.
     *
     * @param columnNameA
     * @param columnNameB
     */
    void swapColumns(String columnNameA, String columnNameB);

    /**
     * Move the specified row to the new position.
     *
     * @param rowIndex
     * @param newRowIndex
     */
    void moveRow(int rowIndex, int newRowIndex);

    /**
     * Swap the positions of the two specified rows.
     *
     * @param rowIndexA
     * @param rowIndexB
     */
    void swapRows(int rowIndexA, int rowIndexB);

    /**
     * There is NO underline auto-conversion from column value to target type: {@code T}.
     * So the column values must be the type which is assignable to target type.
     *
     * @param 
     * @param rowIndex
     * @param columnIndex
     * @return
     */
     T get(int rowIndex, int columnIndex);

    /**
     * There is NO underline auto-conversion from column value to target type: {@code T}.
     * So the column values must be the type which is assignable to target type.
     *
     * 
* Node: To follow one of general design rules in {@code Abacus}, if there is a conversion behind when the source value is not assignable to the target type, put the {@code targetType} to last parameter of the method. * Otherwise, put the {@code targetTpye} to the first parameter of the method. * * @param * @param targetType * @param rowIndex * @param columnIndex * @return * @deprecated may be misused because it implies there is an underline auto-conversion from column values to target return type but actually there is not. */ @Deprecated T get(Class targetType, int rowIndex, int columnIndex); /** * * @param rowIndex * @param columnIndex * @param element */ void set(int rowIndex, int columnIndex, Object element); /** * Checks if is null. * * @param rowIndex * @param columnIndex * @return true, if is null */ boolean isNull(int rowIndex, int columnIndex); /** * * There is NO underline auto-conversion from column value to target type: {@code T}. * So the column values must be the type which is assignable to target type. * * @param * @param columnIndex * @return */ T get(int columnIndex); /** * * There is NO underline auto-conversion from column value to target type: {@code T}. * So the column values must be the type which is assignable to target type. * * @param * @param columnName * @return */ T get(String columnName); /** * There is NO underline auto-conversion from column value to target type: {@code T}. * So the column values must be the type which is assignable to target type. * *
* Node: To follow one of general design rules in {@code Abacus}, if there is a conversion behind when the source value is not assignable to the target type, put the {@code targetType} to last parameter of the method. * Otherwise, put the {@code targetTpye} to the first parameter of the method. * * @param * @param targetType * @param columnIndex * @return * @deprecated may be misused because it implies there is an underline auto-conversion from column values to target return type but actually there is not. */ @Deprecated T get(Class targetType, int columnIndex); /** * * There is NO underline auto-conversion from column value to target type: {@code T}. * So the column values must be the type which is assignable to target type. * *
* Node: To follow one of general design rules in {@code Abacus}, if there is a conversion behind when the source value is not assignable to the target type, put the {@code targetType} to last parameter of the method. * Otherwise, put the {@code targetTpye} to the first parameter of the method. * * @param * @param targetType * @param columnName * @return * @deprecated may be misused because it implies there is an underline auto-conversion from column values to target return type but actually there is not. */ @Deprecated T get(Class targetType, String columnName); /** * Returns the value from the current row and specified column if the specified {@code columnIndex} is equal or bigger than zero, * or the specified {@code defaultValue} otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code T}. * So the column values must be the type which is assignable to target type. * * @param * @param columnIndex * @param defaultValue * @return * @deprecated */ @Deprecated T getOrDefault(int columnIndex, T defaultValue); /** * Returns the value from the current row and specified column if the specified {@code columnName} exists, * or the specified {@code defaultValue} otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code T}. * So the column values must be the type which is assignable to target type. * * @param * @param columnName * @param defaultValue * @return * @deprecated */ @Deprecated T getOrDefault(String columnName, T defaultValue); /** * Return default value (false) if the property is null. *
* There is NO underline auto-conversion from column value to target type: {@code Boolean}. * So the column values must be the type which is assignable to target type. * * @param columnIndex * @return */ boolean getBoolean(int columnIndex); /** * Return default value (false) if the property is null. *
* There is NO underline auto-conversion from column value to target type: {@code Boolean}. * So the column values must be the type which is assignable to target type. * * @param columnName * @return */ boolean getBoolean(String columnName); /** * Return default value (0) if the property is null. *
* There is NO underline auto-conversion from column value to target type: {@code Character}. * So the column values must be the type which is assignable to target type. * * @param columnIndex * @return */ char getChar(int columnIndex); /** * Return default value (0) if the property is null. *
* There is NO underline auto-conversion from column value to target type: {@code Character}. * So the column values must be the type which is assignable to target type. * * @param columnName * @return */ char getChar(String columnName); /** * Return default value (0) if the property is null. Return Number.byteValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Byte}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnIndex * @return */ byte getByte(int columnIndex); /** * Return default value (0) if the property is null. Return Number.byteValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Byte}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnName * @return */ byte getByte(String columnName); /** * Return default value (0) if the property is null. Return Number.shortValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Short}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnIndex * @return */ short getShort(int columnIndex); /** * Return default value (0) if the property is null. Return Number.shortValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Short}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnName * @return */ short getShort(String columnName); /** * Return default value (0) if the property is null. Return Number.intValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Integer}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnIndex * @return */ int getInt(int columnIndex); /** * Return default value (0) if the property is null. Return Number.intValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Integer}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnName * @return */ int getInt(String columnName); /** * Return default value (0) if the property is null. Return Number.longValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Long}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnIndex * @return */ long getLong(int columnIndex); /** * Return default value (0) if the property is null. Return Number.longValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Long}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnName * @return */ long getLong(String columnName); /** * Return default value (0f) if the property is null. Return Number.floatValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Float}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnIndex * @return */ float getFloat(int columnIndex); /** * Return default value (0f) if the property is null. Return Number.floatValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Float}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnName * @return */ float getFloat(String columnName); /** * Return default value (0d) if the property is null. Return Number.doubleValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Double}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnIndex * @return */ double getDouble(int columnIndex); /** * Return default value (0d) if the property is null. Return Number.doubleValue() otherwise. *
* There is NO underline auto-conversion from column value to target type: {@code Double}. * So the column values must be the type which is assignable to target type, or {@code Number}. * * @param columnName * @return */ double getDouble(String columnName); /** * Checks if is null. * * @param columnIndex * @return true, if is null */ boolean isNull(int columnIndex); /** * Checks if is null. * * @param columnName * @return true, if is null */ boolean isNull(String columnName); /** * * @param columnIndex * @param value */ void set(int columnIndex, Object value); /** * * @param columnName * @param value */ void set(String columnName, Object value); /** * Must NOT modify the returned list. * * @param * @param columnIndex * @return */ ImmutableList getColumn(int columnIndex); /** * Must NOT modify the returned list. * * @param * @param columnName * @return */ ImmutableList getColumn(String columnName); /** * Copy of column. * * @param * @param columnName * @return */ List copyOfColumn(String columnName); /** * * @param columnName * @param column */ void addColumn(String columnName, List column); /** * * @param columnIndex position to add. * @param columnName * @param column */ void addColumn(int columnIndex, String columnName, List column); /** * Generate the new column values from the specified column by the specified Function. * * @param * @param * @param newColumnName * @param fromColumnName * @param func * @throws E the e */ void addColumn(String newColumnName, String fromColumnName, Throwables.Function func) throws E; /** * Generate the new column values from the specified column by the specified Function. * * @param * @param * @param columnIndex * @param newColumnName * @param fromColumnName * @param func * @throws E the e */ void addColumn(int columnIndex, String newColumnName, String fromColumnName, Throwables.Function func) throws E; /** * Generate the new column values from the specified columns by the specified Function. * * @param * @param newColumnName * @param fromColumnNames * @param func DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void addColumn(String newColumnName, Collection fromColumnNames, Throwables.Function func) throws E; /** * Generate the new column values from the specified columns by the specified Function. * * @param * @param columnIndex * @param newColumnName * @param fromColumnNames * @param func DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void addColumn(int columnIndex, String newColumnName, Collection fromColumnNames, Throwables.Function func) throws E; /** * Generate the new column values from the specified columns by the specified Function. * * @param * @param newColumnName * @param fromColumnNames * @param func * @throws E the e */ void addColumn(String newColumnName, Tuple2 fromColumnNames, Throwables.BiFunction func) throws E; /** * Generate the new column values from the specified columns by the specified Function. * * @param * @param columnIndex * @param newColumnName * @param fromColumnNames * @param func * @throws E the e */ void addColumn(int columnIndex, String newColumnName, Tuple2 fromColumnNames, Throwables.BiFunction func) throws E; /** * Generate the new column values from the specified columns by the specified Function. * * @param * @param newColumnName * @param fromColumnNames * @param func * @throws E the e */ void addColumn(String newColumnName, Tuple3 fromColumnNames, Throwables.TriFunction func) throws E; /** * Generate the new column values from the specified columns by the specified Function. * * @param * @param columnIndex * @param newColumnName * @param fromColumnNames * @param func * @throws E the e */ void addColumn(int columnIndex, String newColumnName, Tuple3 fromColumnNames, Throwables.TriFunction func) throws E; /** * Remove the column with the specified columnName from this DataSet. * * @param * @param columnName * @return */ List removeColumn(String columnName); /** * Remove the column(s) with the specified columnNames from this DataSet. * * @param columnNames */ void removeColumns(Collection columnNames); /** * Remove the column(s) whose name matches the specified {@code filter}. * * @param * @param filter column name filter * @throws E the e */ void removeColumns(Throwables.Predicate filter) throws E; // /** // * Remove the column(s) whose name matches the specified {@code filter}. // * // * @param // * @param filter column name filter // * @throws E the e // * @deprecated replaced by {@code removeColumns}. // */ // @Deprecated // void removeColumnsIf(Throwables.Predicate filter) throws E; /** * Update the values of the specified column by the specified Try.Function. * * @param * @param * @param columnName * @param func * @throws E the e */ void updateColumn(String columnName, Throwables.Function func) throws E; /** * Update the values of the specified columns one by one with the specified Try.Function. * * @param * @param * @param columnNames * @param func * @throws E the e */ void updateColumns(Collection columnNames, Throwables.Function func) throws E; /** * Convert the specified column to target type. * * @param columnName * @param targetType */ void convertColumn(String columnName, Class targetType); /** * Convert the specified columns to target types. * * @param columnTargetTypes */ void convertColumns(Map> columnTargetTypes); // // /** // * convert the specified columns to target types. // * // * @param targetColumnTypes fill the element with null if don't wan to convert the target column. // */ // void convertColumn(Class[] targetColumnTypes); // /** * * @param columnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity */ void combineColumns(Collection columnNames, String newColumnName, Class newColumnClass); /** * * @param * @param columnNames * @param newColumnName * @param combineFunc DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void combineColumns(Collection columnNames, String newColumnName, Throwables.Function combineFunc) throws E; /** * * @param * @param columnNames * @param newColumnName * @param combineFunc * @throws E the e */ void combineColumns(Tuple2 columnNames, String newColumnName, Throwables.BiFunction combineFunc) throws E; /** * * @param * @param columnNames * @param newColumnName * @param combineFunc * @throws E the e */ void combineColumns(Tuple3 columnNames, String newColumnName, Throwables.TriFunction combineFunc) throws E; /** * * @param * @param columnNameFilter * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @throws E the e */ void combineColumns(Throwables.Predicate columnNameFilter, String newColumnName, Class newColumnClass) throws E; /** * * @param * @param * @param columnNameFilter * @param newColumnName * @param combineFunc DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e * @throws E2 the e2 */ void combineColumns(Throwables.Predicate columnNameFilter, String newColumnName, Throwables.Function combineFunc) throws E, E2; /** * * @param * @param * @param columnName * @param newColumnNames * @param divideFunc * @throws E the e */ void divideColumn(String columnName, Collection newColumnNames, Throwables.Function, E> divideFunc) throws E; /** * * @param * @param * @param columnName * @param newColumnNames * @param output * @throws E the e */ void divideColumn(String columnName, Collection newColumnNames, Throwables.BiConsumer output) throws E; /** * * @param * @param * @param columnName * @param newColumnNames * @param output * @throws E the e */ void divideColumn(String columnName, Tuple2 newColumnNames, Throwables.BiConsumer, E> output) throws E; /** * * @param * @param * @param columnName * @param newColumnNames * @param output * @throws E the e */ void divideColumn(String columnName, Tuple3 newColumnNames, Throwables.BiConsumer, E> output) throws E; /** * Adds the row. * * @param row can be Object[]/List/Map/Entity with getter/setter methods */ void addRow(Object row); /** * Adds the row. * * @param rowIndex * @param row can be Object[]/List/Map/Entity with getter/setter methods */ void addRow(int rowIndex, Object row); /** * Removes the row. * * @param rowIndex */ void removeRow(int rowIndex); /** * Removes the rows. * * @param indices */ void removeRows(int... indices); /** * Removes the row range. * * @param inclusiveFromRowIndex * @param exclusiveToRowIndex */ void removeRowRange(int inclusiveFromRowIndex, int exclusiveToRowIndex); /** * Update the values in the specified row with the specified Try.Function. * * @param * @param rowIndex * @param func * @throws E the e */ void updateRow(int rowIndex, Throwables.Function func) throws E; /** * Update the values in the specified rows one by one with the specified Try.Function. * * @param * @param indices * @param func * @throws E the e */ void updateRows(int[] indices, Throwables.Function func) throws E; /** * Update all the values in this DataSet with the specified Try.Function. * * @param * @param func * @throws E the e */ void updateAll(Throwables.Function func) throws E; /** * Replace all the values in this DataSet with the specified new value if it matches the specified condition. * * @param * @param func * @param newValue * @throws E the e */ void replaceIf(Throwables.Predicate func, Object newValue) throws E; /** * Returns the current row number. * * @return */ int currentRowNum(); /** * Move the cursor to the specified row. * * @param rowNum * @return this object itself. */ DataSet absolute(int rowNum); /** * Gets the row. * * @param rowNum * @return */ Object[] getRow(int rowNum); /** * Gets the row. * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param rowNum * @return */ T getRow(Class rowClass, int rowNum); /** * Gets the row. * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnNames * @param rowNum * @return */ T getRow(Class rowClass, Collection columnNames, int rowNum); /** * Gets the row. * @param rowNum * @param rowSupplier it can be Object[]/List/Set/Map/Entity * * @param * @return */ T getRow(int rowNum, IntFunction rowSupplier); /** * Gets the row. * @param columnNames * @param rowNum * @param rowSupplier it can be Object[]/List/Set/Map/Entity * * @param * @return */ T getRow(Collection columnNames, int rowNum, IntFunction rowSupplier); /** * * @return {@code Optional} */ Optional firstRow(); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @return {@code Optional} */ Optional firstRow(Class rowClass); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnNames * @return {@code Optional} */ Optional firstRow(Class rowClass, Collection columnNames); /** * * @param * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @return {@code Optional} */ Optional firstRow(IntFunction rowSupplier); /** * * @param columnNames * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return {@code Optional} */ Optional firstRow(Collection columnNames, IntFunction rowSupplier); /** * * @return {@code Optional} */ Optional lastRow(); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @return {@code Optional} */ Optional lastRow(Class rowClass); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * which can be object array/list/set/map/entity. * @param columnNames * @return {@code Optional} */ Optional lastRow(Class rowClass, Collection columnNames); /** * * @param * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @return {@code Optional} */ Optional lastRow(IntFunction rowSupplier); /** * * @param columnNames * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return {@code Optional} */ Optional lastRow(Collection columnNames, IntFunction rowSupplier); /** * Performs the given action for each row of the {@code DataSet} * until all rows have been processed or the action throws an * exception. * * @param * @param action DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void forEach(Throwables.Consumer action) throws E; /** * Performs the given action for each row of the {@code DataSet} * until all rows have been processed or the action throws an * exception. * * @param * @param columnNames * @param action DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void forEach(Collection columnNames, Throwables.Consumer action) throws E; /** * Performs the given action for each row of the {@code DataSet} * until all rows have been processed or the action throws an * exception. * * @param * @param fromRowIndex * @param toRowIndex * @param action DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void forEach(int fromRowIndex, int toRowIndex, Throwables.Consumer action) throws E; /** * Performs the given action for each row of the {@code DataSet} * until all rows have been processed or the action throws an * exception. * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param action DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @throws E the e */ void forEach(Collection columnNames, int fromRowIndex, int toRowIndex, Throwables.Consumer action) throws E; /** * * @param * @param columnNames * @param action * @throws E the e */ void forEach(Tuple2 columnNames, Throwables.BiConsumer action) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param action * @throws E the e */ void forEach(Tuple2 columnNames, int fromRowIndex, int toRowIndex, Throwables.BiConsumer action) throws E; /** * * @param * @param columnNames * @param action * @throws E the e */ void forEach(Tuple3 columnNames, Throwables.TriConsumer action) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param action * @throws E the e */ void forEach(Tuple3 columnNames, int fromRowIndex, int toRowIndex, Throwables.TriConsumer action) throws E; List toList(); /** * * @param fromRowIndex * @param toRowIndex * @return */ List toList(int fromRowIndex, int toRowIndex); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @return */ List toList(Class rowClass); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param fromRowIndex * @param toRowIndex * @return */ List toList(Class rowClass, int fromRowIndex, int toRowIndex); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnNames * @return */ List toList(Class rowClass, Collection columnNames); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ List toList(Class rowClass, Collection columnNames, int fromRowIndex, int toRowIndex); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnFilter * @param columnConverter * @return */ List toList(Class rowClass, Throwables.Predicate columnFilter, Throwables.Function columnConverter) throws E, E2; /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnFilter * @param columnConverter * @param fromRowIndex * @param toRowIndex * @return */ List toList(Class rowClass, Throwables.Predicate columnFilter, Throwables.Function columnConverter, int fromRowIndex, int toRowIndex) throws E, E2; /** * * @param * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @return */ List toList(IntFunction rowSupplier); /** * * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return */ List toList(int fromRowIndex, int toRowIndex, IntFunction rowSupplier); /** * * @param columnNames * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return */ List toList(Collection columnNames, IntFunction rowSupplier); /** * * @param columnNames * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return */ List toList(Collection columnNames, int fromRowIndex, int toRowIndex, IntFunction rowSupplier); /** * * @param the key type * @param the value type * @param keyColumnName * @param valueColumnName * @return */ Map toMap(String keyColumnName, String valueColumnName); /** * * @param the key type * @param the value type * @param keyColumnName * @param valueColumnName * @param fromRowIndex * @param toRowIndex * @return */ Map toMap(String keyColumnName, String valueColumnName, int fromRowIndex, int toRowIndex); /** * * @param the key type * @param the value type * @param * @param keyColumnName * @param valueColumnName * @param fromRowIndex * @param toRowIndex * @param supplier * @return */ > M toMap(String keyColumnName, String valueColumnName, int fromRowIndex, int toRowIndex, IntFunction supplier); /** * * @param the key type * @param the value type * @param rowClass it can be Object[]/List/Set/Map/Entity * @param keyColumnName * @param valueColumnNames * @return */ Map toMap(Class rowClass, String keyColumnName, Collection valueColumnNames); /** * * @param the key type * @param the value type * @param rowClass it can be Object[]/List/Set/Map/Entity * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @return */ Map toMap(Class rowClass, String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex); /** * * @param the key type * @param the value type * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @param supplier * @return */ > M toMap(Class rowClass, String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex, IntFunction supplier); /** * * @param keyColumnName * @param valueColumnNames * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param the key type * @param the value type * @return */ Map toMap(String keyColumnName, Collection valueColumnNames, IntFunction rowSupplier); /** * * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param the key type * @param the value type * @return */ Map toMap(String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex, IntFunction rowSupplier); /** * * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param supplier * @param the key type * @param the value type * @param * @return */ > M toMap(String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex, IntFunction rowSupplier, IntFunction supplier); /** * * @param the key type * @param * @param keyColumnName * @param valueColumnName * @return */ ListMultimap toMultimap(String keyColumnName, String valueColumnName); /** * * @param the key type * @param * @param keyColumnName * @param valueColumnName * @param fromRowIndex * @param toRowIndex * @return */ ListMultimap toMultimap(String keyColumnName, String valueColumnName, int fromRowIndex, int toRowIndex); /** * * @param the key type * @param * @param the value type * @param * @param keyColumnName * @param valueColumnName * @param fromRowIndex * @param toRowIndex * @param supplier * @return */ , M extends Multimap> M toMultimap(String keyColumnName, String valueColumnName, int fromRowIndex, int toRowIndex, IntFunction supplier); /** * * @param the key type * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param keyColumnName * @param valueColumnNames * @return */ ListMultimap toMultimap(Class rowClass, String keyColumnName, Collection valueColumnNames); /** * * @param the key type * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @return */ ListMultimap toMultimap(Class rowClass, String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex); /** * * @param the key type * @param * @param the value type * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @param supplier * @return */ , M extends Multimap> M toMultimap(Class rowClass, String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex, IntFunction supplier); /** * * @param keyColumnName * @param valueColumnNames * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param the key type * @param * @return */ ListMultimap toMultimap(String keyColumnName, Collection valueColumnNames, IntFunction rowSupplier); /** * * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param the key type * @param * @return */ ListMultimap toMultimap(String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex, IntFunction rowSupplier); /** * * @param keyColumnName * @param valueColumnNames * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param supplier * @param the key type * @param * @param the value type * @param * @return */ , M extends Multimap> M toMultimap(String keyColumnName, Collection valueColumnNames, int fromRowIndex, int toRowIndex, IntFunction rowSupplier, IntFunction supplier); /** * * @param * @param entityClass * @return */ List toMergedEntities(Class entityClass); /** * * @param * @param entityClass * @param selectPropNames * @return */ List toMergedEntities(Class entityClass, Collection selectPropNames); /** * * @param * @param entityClass * @param idPropName * @return */ List toMergedEntities(Class entityClass, String idPropName); /** * * @param * @param entityClass * @param idPropName * @param selectPropNames * @return */ List toMergedEntities(Class entityClass, String idPropName, Collection selectPropNames); /** * * @param * @param entityClass * @param idPropNames * @param selectPropNames * @return */ List toMergedEntities(Class entityClass, Collection idPropNames, Collection selectPropNames); String toJSON(); /** * * @param fromRowIndex * @param toRowIndex * @return */ String toJSON(int fromRowIndex, int toRowIndex); /** * * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ String toJSON(Collection columnNames, int fromRowIndex, int toRowIndex); /** * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toJSON(File output) throws UncheckedIOException; /** * * @param output * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toJSON(File output, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toJSON(File output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toJSON(OutputStream output) throws UncheckedIOException; /** * * @param output * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toJSON(OutputStream output, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toJSON(OutputStream output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toJSON(Writer output) throws UncheckedIOException; /** * * @param output * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toJSON(Writer output, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toJSON(Writer output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; String toXML(); /** * * @param rowElementName * @return */ String toXML(String rowElementName); /** * * @param fromRowIndex * @param toRowIndex * @return */ String toXML(int fromRowIndex, int toRowIndex); /** * * @param rowElementName * @param fromRowIndex * @param toRowIndex * @return */ String toXML(String rowElementName, int fromRowIndex, int toRowIndex); /** * * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ String toXML(Collection columnNames, int fromRowIndex, int toRowIndex); /** * * @param rowElementName * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ String toXML(String rowElementName, Collection columnNames, int fromRowIndex, int toRowIndex); /** * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toXML(File output) throws UncheckedIOException; /** * * @param output * @param rowElementName * @throws UncheckedIOException the unchecked IO exception */ void toXML(File output, String rowElementName) throws UncheckedIOException; /** * * @param output * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(File output, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param rowElementName * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(File output, String rowElementName, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(File output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param rowElementName * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(File output, String rowElementName, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toXML(OutputStream output) throws UncheckedIOException; /** * * @param output * @param rowElementName * @throws UncheckedIOException the unchecked IO exception */ void toXML(OutputStream output, String rowElementName) throws UncheckedIOException; /** * * @param output * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(OutputStream output, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param rowElementName * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(OutputStream output, String rowElementName, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(OutputStream output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param rowElementName * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(OutputStream output, String rowElementName, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toXML(Writer output) throws UncheckedIOException; /** * * @param output * @param rowElementName * @throws UncheckedIOException the unchecked IO exception */ void toXML(Writer output, String rowElementName) throws UncheckedIOException; /** * * @param output * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(Writer output, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param rowElementName * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(Writer output, String rowElementName, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(Writer output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param output * @param rowElementName * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toXML(Writer output, String rowElementName, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @return */ String toCSV(); /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ String toCSV(Collection columnNames, int fromRowIndex, int toRowIndex); /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param writeTitle * @param quoteValue * @return */ String toCSV(boolean writeTitle, boolean quoteValue); /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param columnNames * @param fromRowIndex * @param toRowIndex * @param writeTitle * @param quoteValue * @return */ String toCSV(Collection columnNames, int fromRowIndex, int toRowIndex, boolean writeTitle, boolean quoteValue); /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toCSV(File output) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toCSV(File output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param writeTitle * @param quoteValue * @throws UncheckedIOException the unchecked IO exception */ void toCSV(File output, boolean writeTitle, boolean quoteValue) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @param writeTitle * @param quoteValue * @throws UncheckedIOException the unchecked IO exception */ void toCSV(File output, Collection columnNames, int fromRowIndex, int toRowIndex, boolean writeTitle, boolean quoteValue) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toCSV(OutputStream output); /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toCSV(OutputStream output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param writeTitle * @param quoteValue * @throws UncheckedIOException the unchecked IO exception */ void toCSV(OutputStream output, boolean writeTitle, boolean quoteValue) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @param writeTitle * @param quoteValue * @throws UncheckedIOException the unchecked IO exception */ void toCSV(OutputStream output, Collection columnNames, int fromRowIndex, int toRowIndex, boolean writeTitle, boolean quoteValue) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @throws UncheckedIOException the unchecked IO exception */ void toCSV(Writer output); /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void toCSV(Writer output, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param writeTitle * @param quoteValue * @throws UncheckedIOException the unchecked IO exception */ void toCSV(Writer output, boolean writeTitle, boolean quoteValue) throws UncheckedIOException; /** * Each line in the output file/Writer is an array of JSON String without root bracket. * * @param output * @param columnNames * @param fromRowIndex * @param toRowIndex * @param writeTitle * @param quoteValue * @throws UncheckedIOException the unchecked IO exception */ void toCSV(Writer output, Collection columnNames, int fromRowIndex, int toRowIndex, boolean writeTitle, boolean quoteValue) throws UncheckedIOException; // /** // * // * @param columnName specifying the column to group by. // * @return // * @deprecated // */ // @Deprecated // DataSet groupBy(String columnName); /** * * @param * @param columnName * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return */ DataSet groupBy(String columnName, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector); /** * * @param * @param * @param columnName * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @throws E the e */ DataSet groupBy(String columnName, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E> func) throws E; /** * * @param columnName * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return */ DataSet groupBy(String columnName, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass); /** * * @param columnName * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return */ DataSet groupBy(String columnName, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector); /** * * @param * @param * @param columnName * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @throws E the e */ DataSet groupBy(String columnName, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector) throws E; // /** // * // * @param the key type // * @param // * @param columnName // * @param keyMapper // * @return // * @throws E the e // * @deprecated // */ // @Deprecated // DataSet groupBy(String columnName, Throwables.Function keyMapper) throws E; /** * * @param the key type * @param * @param * @param columnName * @param keyMapper * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return * @throws E the e */ DataSet groupBy(String columnName, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector) throws E; /** * * @param the key type * @param * @param * @param * @param columnName * @param keyMapper * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @throws E the e * @throws E2 the e2 */ DataSet groupBy(String columnName, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E2> func) throws E, E2; /** * * @param the key type * @param * @param columnName * @param keyMapper * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return * @throws E the e */ DataSet groupBy(String columnName, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass) throws E; /** * * @param the key type * @param * @param columnName * @param keyMapper * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return * @throws E the e */ DataSet groupBy(String columnName, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector) throws E; /** * * @param the key type * @param * @param * @param * @param columnName * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @throws E the e * @throws E2 the e2 */ DataSet groupBy(String columnName, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector) throws E, E2; /** * * @param columnNames * @return */ DataSet groupBy(Collection columnNames); /** * * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return */ DataSet groupBy(Collection columnNames, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector); /** * * @param * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @throws E the e */ DataSet groupBy(Collection columnNames, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E> func) throws E; /** * * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return */ DataSet groupBy(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass); /** * * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return */ DataSet groupBy(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector); /** * * @param * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @throws E the e */ DataSet groupBy(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector) throws E; /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @throws E the e */ DataSet groupBy(Collection columnNames, Throwables.Function keyMapper) throws E; /** * * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return * @throws E the e */ DataSet groupBy(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector) throws E; /** * * @param * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @throws E the e * @throws E2 the e2 */ DataSet groupBy(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E2> func) throws E, E2; /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return * @throws E the e */ DataSet groupBy(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass) throws E; /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return * @throws E the e */ DataSet groupBy(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector) throws E; /** * * @param * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @throws E the e * @throws E2 the e2 */ DataSet groupBy(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector) throws E, E2; /** * * @param columnNames * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames); /** * * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector); /** * * @param * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E> func); /** * * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass); /** * * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector); /** * * @param * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector); /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, Throwables.Function keyMapper); /** * * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector); /** * * @param * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E2> func); /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass); /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector); /** * * @param * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @see Iterables#rollup(Collection) */ @Beta Stream rollup(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector); /** * * @param columnNames * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames); /** * * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector); /** * * @param * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E> func); /** * * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass); /** * * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector); /** * * @param * @param * @param columnNames * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector); /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, Throwables.Function keyMapper); /** * * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnName * @param collector * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Collector collector); /** * * @param * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnName * @param func * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, String aggregateOnColumnName, Throwables.Function, ?, E2> func); /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowClass * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Class rowClass); /** * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param collector * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Collector collector); /** * * @param * @param * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param aggregateResultColumnName * @param aggregateOnColumnNames * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param collector * @return * @see Iterables#powerSet(java.util.Set) */ @Beta Stream cube(Collection columnNames, Throwables.Function keyMapper, String aggregateResultColumnName, Collection aggregateOnColumnNames, Throwables.Function rowMapper, Collector collector); /** * * @param columnName */ void sortBy(String columnName); /** * * @param * @param columnName * @param cmp */ void sortBy(String columnName, Comparator cmp); /** * * @param columnNames */ void sortBy(Collection columnNames); /** * * @param columnNames * @param cmp */ void sortBy(Collection columnNames, Comparator cmp); /** * * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) */ @SuppressWarnings("rawtypes") void sortBy(Collection columnNames, Function keyMapper); /** * Parallel sort by. * * @param columnName */ void parallelSortBy(String columnName); /** * Parallel sort by. * * @param * @param columnName * @param cmp */ void parallelSortBy(String columnName, Comparator cmp); /** * Parallel sort by. * * @param columnNames */ void parallelSortBy(Collection columnNames); /** * Parallel sort by. * * @param columnNames * @param cmp */ void parallelSortBy(Collection columnNames, Comparator cmp); /** * Parallel sort by. * * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) */ @SuppressWarnings("rawtypes") void parallelSortBy(Collection columnNames, Function keyMapper); /** * * @param columnName * @param n * @return */ DataSet topBy(String columnName, int n); /** * * @param * @param columnName * @param n * @param cmp * @return */ DataSet topBy(String columnName, int n, Comparator cmp); /** * * @param columnNames * @param n * @return */ DataSet topBy(Collection columnNames, int n); /** * * @param columnNames * @param n * @param cmp * @return */ DataSet topBy(Collection columnNames, int n, Comparator cmp); /** * * @param columnNames * @param n * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return */ @SuppressWarnings("rawtypes") DataSet topBy(Collection columnNames, int n, Function keyMapper); /** * Returns a new DataSet with the rows de-duplicated by the values in all columns. * * @return a new DataSet */ DataSet distinct(); /** * Returns a new DataSet with the rows de-duplicated by the value in the specified column. * * @param columnName * @return a new DataSet */ DataSet distinctBy(String columnName); /** * Returns a new DataSet with the rows de-duplicated by the value in the specified column from the specified fromRowIndex to toRowIndex. * * @param the key type * @param * @param columnName * @param keyMapper don't change value of the input parameter. * @return * @throws E the e */ DataSet distinctBy(String columnName, Throwables.Function keyMapper) throws E; /** * Returns a new DataSet with the rows de-duplicated by the values in the specified columns. * * @param columnNames * @return a new DataSet */ DataSet distinctBy(Collection columnNames); /** * Returns a new DataSet with the rows de-duplicated by the values in the specified columns from the specified fromRowIndex to toRowIndex. * * @param * @param columnNames * @param keyMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @throws E the e */ DataSet distinctBy(Collection columnNames, Throwables.Function keyMapper) throws E; /** * * @param * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @throws E the e */ DataSet filter(Throwables.Predicate filter) throws E; /** * * @param * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param max * @return * @throws E the e */ DataSet filter(Throwables.Predicate filter, int max) throws E; /** * * @param * @param fromRowIndex * @param toRowIndex * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @throws E the e */ DataSet filter(int fromRowIndex, int toRowIndex, Throwables.Predicate filter) throws E; /** * * @param * @param fromRowIndex * @param toRowIndex * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param max * @return * @throws E the e */ DataSet filter(int fromRowIndex, int toRowIndex, Throwables.Predicate filter, int max) throws E; /** * * @param * @param columnNames * @param filter * @return * @throws E the e */ DataSet filter(Tuple2 columnNames, Throwables.BiPredicate filter) throws E; /** * * @param * @param columnNames * @param filter * @param max * @return * @throws E the e */ DataSet filter(Tuple2 columnNames, Throwables.BiPredicate filter, int max) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param filter * @return * @throws E the e */ DataSet filter(Tuple2 columnNames, int fromRowIndex, int toRowIndex, Throwables.BiPredicate filter) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param filter * @param max * @return * @throws E the e */ DataSet filter(Tuple2 columnNames, int fromRowIndex, int toRowIndex, Throwables.BiPredicate filter, int max) throws E; /** * * @param * @param columnNames * @param filter * @return * @throws E the e */ DataSet filter(Tuple3 columnNames, Throwables.TriPredicate filter) throws E; /** * * @param * @param columnNames * @param filter * @param max * @return * @throws E the e */ DataSet filter(Tuple3 columnNames, Throwables.TriPredicate filter, int max) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param filter * @return * @throws E the e */ DataSet filter(Tuple3 columnNames, int fromRowIndex, int toRowIndex, Throwables.TriPredicate filter) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param filter * @param max * @return * @throws E the e */ DataSet filter(Tuple3 columnNames, int fromRowIndex, int toRowIndex, Throwables.TriPredicate filter, int max) throws E; /** * * @param * @param * @param columnName * @param filter * @return * @throws E the e */ DataSet filter(String columnName, Throwables.Predicate filter) throws E; /** * * @param * @param * @param columnName * @param filter * @param max * @return * @throws E the e */ DataSet filter(String columnName, Throwables.Predicate filter, int max) throws E; /** * * @param * @param * @param columnName * @param fromRowIndex * @param toRowIndex * @param filter * @return * @throws E the e */ DataSet filter(String columnName, int fromRowIndex, int toRowIndex, Throwables.Predicate filter) throws E; /** * * @param * @param * @param columnName * @param fromRowIndex * @param toRowIndex * @param filter * @param max * @return * @throws E the e */ DataSet filter(String columnName, int fromRowIndex, int toRowIndex, Throwables.Predicate filter, int max) throws E; /** * * @param * @param columnNames * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @throws E the e */ DataSet filter(Collection columnNames, Throwables.Predicate filter) throws E; /** * * @param * @param columnNames * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param max * @return * @throws E the e */ DataSet filter(Collection columnNames, Throwables.Predicate filter, int max) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @return * @throws E the e */ DataSet filter(Collection columnNames, int fromRowIndex, int toRowIndex, Throwables.Predicate filter) throws E; /** * * @param * @param columnNames * @param fromRowIndex * @param toRowIndex * @param filter DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param max * @return * @throws E the e */ DataSet filter(Collection columnNames, int fromRowIndex, int toRowIndex, Throwables.Predicate filter, int max) throws E; /** * * @param * @param fromColumnName * @param func * @param newColumnName * @param copyingColumnName * @return * @throws E the e */ DataSet map(String fromColumnName, Throwables.Function func, String newColumnName, String copyingColumnName) throws E; /** * * @param * @param fromColumnName * @param func * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet map(String fromColumnName, Throwables.Function func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnNames * @param func * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet map(Tuple2 fromColumnNames, Throwables.BiFunction func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnNames * @param func * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet map(Tuple3 fromColumnNames, Throwables.TriFunction func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnNames * @param func DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet map(Collection fromColumnNames, Throwables.Function func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnName * @param func * @param newColumnName * @param copyingColumnName * @return * @throws E the e */ DataSet flatMap(String fromColumnName, Throwables.Function, E> func, String newColumnName, String copyingColumnName) throws E; /** * * @param * @param fromColumnName * @param func * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet flatMap(String fromColumnName, Throwables.Function, E> func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnNames * @param func * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet flatMap(Tuple2 fromColumnNames, Throwables.BiFunction, E> func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnNames * @param func * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet flatMap(Tuple3 fromColumnNames, Throwables.TriFunction, E> func, String newColumnName, Collection copyingColumnNames) throws E; /** * * @param * @param fromColumnNames * @param func DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) * @param newColumnName * @param copyingColumnNames * @return * @throws E the e */ DataSet flatMap(Collection fromColumnNames, Throwables.Function, E> func, String newColumnName, Collection copyingColumnNames) throws E; /** * Returns a new DataSet that is limited to the rows where there is a match in both this DataSet and right DataSet. * * @param right * @param columnName * @param refColumnName * @return a new DataSet */ DataSet innerJoin(DataSet right, String columnName, String refColumnName); /** * Returns a new DataSet that is limited to the rows where there is a match in both this DataSet and right DataSet. * * @param right * @param onColumnNames * @return a new DataSet */ DataSet innerJoin(DataSet right, Map onColumnNames); /** * Returns a new DataSet that is limited to the rows where there is a match in both this DataSet and right DataSet. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @return a new DataSet */ DataSet innerJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass); /** * Returns a new DataSet that is limited to the rows where there is a match in both this DataSet and right DataSet. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @param collSupplier it's for one-to-many join * @return a new DataSet */ @SuppressWarnings("rawtypes") DataSet innerJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass, IntFunction collSupplier); /** * Returns a new DataSet that has all the rows from this DataSet and the rows from the specified right DataSet if they have a match with the rows from the this DataSet. * * @param right * @param columnName * @param refColumnName * @return a new DataSet */ DataSet leftJoin(DataSet right, String columnName, String refColumnName); /** * Returns a new DataSet that has all the rows from this DataSet and the rows from the specified right DataSet if they have a match with the rows from the this DataSet. * * @param right * @param onColumnNames * @return a new DataSet */ DataSet leftJoin(DataSet right, Map onColumnNames); /** * Returns a new DataSet that has all the rows from this DataSet and the rows from the specified right DataSet if they have a match with the rows from the this DataSet. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @return a new DataSet */ DataSet leftJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass); /** * Returns a new DataSet that has all the rows from this DataSet and the rows from the specified right DataSet if they have a match with the rows from the this DataSet. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @param collSupplier it's for one-to-many join * @return a new DataSet */ @SuppressWarnings("rawtypes") DataSet leftJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass, IntFunction collSupplier); /** * Returns a new DataSet that has all the rows from the specified right DataSet and the rows from this DataSet if they have a match with the rows from the right DataSet. * * @param right * @param columnName * @param refColumnName * @return a new DataSet */ DataSet rightJoin(DataSet right, String columnName, String refColumnName); /** * Returns a new DataSet that has all the rows from the specified right DataSet and the rows from this DataSet if they have a match with the rows from the right DataSet. * * @param right * @param onColumnNames * @return a new DataSet */ DataSet rightJoin(DataSet right, Map onColumnNames); /** * Returns a new DataSet that has all the rows from the specified right DataSet and the rows from this DataSet if they have a match with the rows from the right DataSet. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @return a new DataSet */ DataSet rightJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass); /** * Returns a new DataSet that has all the rows from the specified right DataSet and the rows from this DataSet if they have a match with the rows from the right DataSet. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @param collSupplier it's for one-to-many join * @return a new DataSet */ @SuppressWarnings("rawtypes") DataSet rightJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass, IntFunction collSupplier); /** * Returns a new DataSet that has all the rows from this DataSet and the specified right DataSet, regardless of whether there are any matches. * * @param right * @param columnName * @param refColumnName * @return a new DataSet */ DataSet fullJoin(DataSet right, String columnName, String refColumnName); /** * Returns a new DataSet that has all the rows from this DataSet and the specified right DataSet, regardless of whether there are any matches. * * @param right * @param onColumnNames * @return a new DataSet */ DataSet fullJoin(DataSet right, Map onColumnNames); /** * Returns a new DataSet that has all the rows from this DataSet and the specified right DataSet, regardless of whether there are any matches. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @return a new DataSet */ DataSet fullJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass); /** * Returns a new DataSet that has all the rows from this DataSet and the specified right DataSet, regardless of whether there are any matches. * * @param right * @param onColumnNames * @param newColumnName * @param newColumnClass it can be Object[]/List/Set/Map/Entity * @param collSupplier it's for one-to-many join * @return a new DataSet */ @SuppressWarnings("rawtypes") DataSet fullJoin(DataSet right, Map onColumnNames, String newColumnName, Class newColumnClass, IntFunction collSupplier); /** * Returns a new DataSet. Duplicated row in the specified {@code DataSet} will be eliminated. * * @param dataSet * @return a new DataSet */ DataSet union(DataSet dataSet); /** * Returns a new DataSet. Duplicated row in the specified {@code DataSet} will not be eliminated. * * @param dataSet * @return a new DataSet */ DataSet unionAll(DataSet dataSet); /** * Returns a new {@code DataSet} with all rows from this DataSet and which also appear in the specified {@code other} in common columns. * This operation removes duplicate rows from the final result set. * * @param other * @return */ DataSet intersect(DataSet other); /** * Returns a new {@code DataSet} with all rows from this DataSet and which also appear in the specified {@code other} in common columns. * This operation doesn't remove duplicate rows from the final result set. * * @param other * @return * @see java.util.Collection#retainAll(Collection) */ DataSet intersectAll(DataSet other); /** * Returns a new {@code DataSet} with all rows from this DataSet and which also appear in the specified {@code other} in common columns by occurrences. * This operation only cares the occurrences of rows in both {@code DataSet}. it doesn't remove duplicate. * * @param dataSet * @return a new DataSet * @see com.landawn.abacus.util.IntList#intersection(com.landawn.abacus.util.IntList) */ DataSet intersection(DataSet dataSet); /** * Returns a new {@code DataSet} with all rows from this DataSet and which not appear in the specified {@code other} in common columns. * * @param other * @return * @see java.util.Collection#removeAll(Collection) */ DataSet except(DataSet other); /** * Returns a new DataSet with different rows in common columns from the specified {@code DataSet}, occurrences matter. * * @param dataSet * @return a new DataSet * @see com.landawn.abacus.util.IntList#difference(com.landawn.abacus.util.IntList) */ DataSet difference(DataSet dataSet); /** * * @param dataSet * @return * @see com.landawn.abacus.util.IntList#symmetricDifference(com.landawn.abacus.util.IntList) */ DataSet symmetricDifference(DataSet dataSet); /** * Returns a new DataSet by appending the specified from DataSet into this DataSet. * * @param from * @return */ DataSet merge(DataSet from); /** * Returns a new DataSet by appending the specified from DataSet into this DataSet. * * @param from * @param columnNames * @return */ DataSet merge(DataSet from, Collection columnNames); /** * Returns a new DataSet by appending the specified from DataSet from fromRowIndex to toRowIndex into this DataSet. * * @param from * @param fromRowIndex * @param toRowIndex * @return */ DataSet merge(DataSet from, int fromRowIndex, int toRowIndex); /** * Returns a new DataSet by appending the specified columnNames in from DataSet from fromRowIndex to toRowIndex into this DataSet. * * @param from * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ DataSet merge(DataSet from, Collection columnNames, int fromRowIndex, int toRowIndex); /** * * @param a * @param b * @return */ DataSet merge(final DataSet a, final DataSet b); /** * * @param dss * @return */ DataSet merge(final Collection dss); /** * * @param b * @return */ DataSet cartesianProduct(DataSet b); /** * Returns consecutive sub lists of this DataSet, each of the same chunkSize (the list may be smaller), or an empty List if this DataSet is empty. * * @param chunkSize the desired size of each sub DataSet (the last may be smaller). * @return */ Stream split(int chunkSize); /** * Returns consecutive sub lists of this DataSet, each of the same chunkSize (the list may be smaller), or an empty List if this DataSet is empty. * * @param columnNames * @param chunkSize the desired size of each sub DataSet (the last may be smaller). * @return */ Stream split(Collection columnNames, int chunkSize); /** * Returns consecutive sub lists of this DataSet, each of the same chunkSize (the list may be smaller), or an empty List if this DataSet is empty. * * @param chunkSize * @return */ List splitToList(int chunkSize); /** * Returns consecutive sub lists of this DataSet, each of the same chunkSize (the list may be smaller), or an empty List if this DataSet is empty. * * @param columnNames * @param chunkSize * @return */ List splitToList(Collection columnNames, int chunkSize); // /** // * Returns consecutive sub lists of this DataSet, each of the same chunkSize (the list may be smaller), or an empty List if this DataSet is empty. // * // * @param chunkSize // * @return // * @deprecated replaced by {@link #splitToList(int)} // */ // @Deprecated // List splitt(int chunkSize); // // /** // * Returns consecutive sub lists of this DataSet, each of the same chunkSize (the list may be smaller), or an empty List if this DataSet is empty. // * // * @param columnNames // * @param chunkSize // * @return // * @deprecated replaced by {@link #splitToList(Collection, int)} // */ // @Deprecated // List splitt(Collection columnNames, int chunkSize); /** * Returns a frozen {@code DataSet}. * * @param columnNames * @return a copy of this DataSet * @see List#subList(int, int). */ DataSet slice(Collection columnNames); /** * Returns a frozen {@code DataSet}. * * @param fromRowIndex * @param toRowIndex * @return a copy of this DataSet * @see List#subList(int, int). */ DataSet slice(int fromRowIndex, int toRowIndex); /** * Returns a frozen {@code DataSet}. * * @param columnNames * @param fromRowIndex * @param toRowIndex * @return a copy of this DataSet * @see List#subList(int, int). */ DataSet slice(Collection columnNames, int fromRowIndex, int toRowIndex); /** * Returns the copy of this DataSet. * The frozen status of the copy will always be false, even the original DataSet is frozen. * * @return a copy of this DataSet */ DataSet copy(); /** * Returns the copy of this DataSet with specified column name list. * The frozen status of the copy will always be false, even the original DataSet is frozen. * * @param columnNames * @return a copy of this DataSet */ DataSet copy(Collection columnNames); /** * Returns the copy of this DataSet from the specified fromRowIndex to toRowIndex. * The frozen status of the copy will always be false, even the original DataSet is frozen. * * @param fromRowIndex * @param toRowIndex * @return a copy of this DataSet */ DataSet copy(int fromRowIndex, int toRowIndex); /** * Returns the copy of this DataSet with specified column name list from the specified fromRowIndex to toRowIndex. * The frozen status of the copy will always be false, even the original DataSet is frozen. * * @param columnNames * @param fromRowIndex * @param toRowIndex * @return a copy of this DataSet */ DataSet copy(Collection columnNames, int fromRowIndex, int toRowIndex); /** * Deeply copy each element in this DataSet by Serialization/Deserialization. * * @return */ DataSet clone(); /** * Deeply copy each element in this DataSet by Serialization/Deserialization. * * @param freeze * @return */ DataSet clone(boolean freeze); /** * * @param * @param * @param columnNameA * @param columnNameB * @return */ BiIterator iterator(String columnNameA, String columnNameB); /** * * @param * @param * @param columnNameA * @param columnNameB * @param fromRowIndex * @param toRowIndex * @return */ BiIterator iterator(String columnNameA, String columnNameB, int fromRowIndex, int toRowIndex); /** * * @param * @param * @param * @param columnNameA * @param columnNameB * @param columnNameC * @return */ TriIterator iterator(String columnNameA, String columnNameB, String columnNameC); /** * * @param * @param * @param * @param columnNameA * @param columnNameB * @param columnNameC * @param fromRowIndex * @param toRowIndex * @return */ TriIterator iterator(String columnNameA, String columnNameB, String columnNameC, int fromRowIndex, int toRowIndex); /** * * @param pageSize * @return */ PaginatedDataSet paginate(int pageSize); /** * * @param columnNames * @param pageSize * @return */ PaginatedDataSet paginate(Collection columnNames, int pageSize); /** * * @param * @param columnName * @return */ Stream stream(String columnName); /** * * @param * @param columnName * @param fromRowIndex * @param toRowIndex * @return */ Stream stream(String columnName, int fromRowIndex, int toRowIndex); // The method stream(Collection, Function) is ambiguous for the type // /** // * // * @param // * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) // * @return // */ // Stream stream(Function rowMapper); // // /** // * // * @param // * @param fromRowIndex // * @param toRowIndex // * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) // * @return // */ // Stream stream(int fromRowIndex, int toRowIndex, Function rowMapper); // // /** // * // * @param // * @param columnNames // * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) // * @return // */ // Stream stream(Collection columnNames, Function rowMapper); // // /** // * // * @param // * @param columnNames // * @param fromRowIndex // * @param toRowIndex // * @param rowMapper DON't cache or update the input parameter {@code DisposableObjArray} or its values(Array) // * @return // */ // Stream stream(Collection columnNames, int fromRowIndex, int toRowIndex, Function rowMapper); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @return */ Stream stream(Class rowClass); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param fromRowIndex * @param toRowIndex * @return */ Stream stream(Class rowClass, int fromRowIndex, int toRowIndex); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnNames * @return */ Stream stream(Class rowClass, Collection columnNames); /** * * @param * @param rowClass it can be Object[]/List/Set/Map/Entity * @param columnNames * @param fromRowIndex * @param toRowIndex * @return */ Stream stream(Class rowClass, Collection columnNames, int fromRowIndex, int toRowIndex); /** * * @param * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @return */ Stream stream(IntFunction rowSupplier); /** * * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return */ Stream stream(int fromRowIndex, int toRowIndex, IntFunction rowSupplier); /** * * @param columnNames * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return */ Stream stream(Collection columnNames, IntFunction rowSupplier); /** * * @param columnNames * @param fromRowIndex * @param toRowIndex * @param rowSupplier it can be Object[]/List/Set/Map/Entity * @param * @return */ Stream stream(Collection columnNames, int fromRowIndex, int toRowIndex, IntFunction rowSupplier); /** * * @param * @param * @param func * @return * @throws E the e */ R apply(Throwables.Function func) throws E; /** * * @param * @param action * @throws E the e */ void accept(Throwables.Consumer action) throws E; /** * Method freeze. */ void freeze(); /** * * @return true, if successful */ boolean frozen(); /** * Method clear. */ void clear(); /** * Checks if is empty. * * @return true, if is empty */ boolean isEmpty(); /** * Trim to size. */ void trimToSize(); /** * Returns the size of this {@code DataSet}. * * @return */ int size(); @Beta Properties properties(); Stream columnNames(); Stream> columns(); /** * * @return key are column name, value is column - an immutable list, backed by the column in this {@code DataSet}. */ Map> columnMap(); // DataSetBuilder builder(); /** * * @throws UncheckedIOException the unchecked IO exception */ void println() throws UncheckedIOException; /** * * @param columnNames * @param fromRowIndex * @param toRowIndex * @throws UncheckedIOException the unchecked IO exception */ void println(Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; /** * * @param * @param outputWriter * @return * @throws UncheckedIOException the unchecked IO exception */ W println(W outputWriter) throws UncheckedIOException; /** * * @param * @param outputWriter * @param columnNames * @param fromRowIndex * @param toRowIndex * @return * @throws UncheckedIOException the unchecked IO exception */ W println(W outputWriter, Collection columnNames, int fromRowIndex, int toRowIndex) throws UncheckedIOException; }