package com.github.lwhite1.tablesaw.filtering; import com.github.lwhite1.tablesaw.api.IntColumn; import com.github.lwhite1.tablesaw.api.Table; import com.github.lwhite1.tablesaw.columns.ColumnReference; import com.github.lwhite1.tablesaw.util.Selection; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntSet; /** */ public class IntIsIn extends ColumnFilter { private IntColumn filterColumn; public IntIsIn(ColumnReference reference, IntColumn filterColumn) { super(reference); this.filterColumn = filterColumn; } public IntIsIn(ColumnReference reference, int... ints) { super(reference); this.filterColumn = IntColumn.create("temp", new IntArrayList(ints)); } public Selection apply(Table relation) { IntColumn intColumn = (IntColumn) relation.column(columnReference.getColumnName()); IntSet firstSet = intColumn.asSet(); firstSet.retainAll(filterColumn.data()); return intColumn.select(firstSet::contains); } }