private TableDataMap chooseDataMap(List<TableDataMap> allDataMap, List<ColumnExpression> columnExpressions, Set<ExpressionType> expressionTypes) { List<DataMapTuple> tuples = new ArrayList<>(); for (TableDataMap dataMap : allDataMap) { if (null != dataMap.getDataMapFactory().getMeta() && contains( dataMap.getDataMapFactory().getMeta(), columnExpressions, expressionTypes)) { tuples.add( new DataMapTuple(dataMap.getDataMapFactory().getMeta().getIndexedColumns().size(), dataMap)); } } if (tuples.size() > 0) { Collections.sort(tuples); return tuples.get(0).dataMap; } return null; }