public void collapseRow(String rowKey) {
        if (!getExpandedRowKeys().remove(rowKey)) {
            LOGGER.log(Level.INFO, "No existing row with key {0}", rowKey);
        }
        if (isMultiViewState()) {
            DataTableState mvs = getMultiViewState(false);
            if (mvs != null && mvs.getExpandedRowKeys() != null) {
                mvs.getExpandedRowKeys().remove(rowKey);
            }
        }
    }
Recalculates filteredValue after adding, updating or removing rows to/from a filtered DataTable.
NOTE: this is only supported for non-lazy DataTables, eg bound to a java.util.List.
primefaces/src/main/java/org/primefaces/component/datatable/DataTable.java