Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5e44570

Browse files
committed
added isIn(array) method needed for work
1 parent a414b7c commit 5e44570

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

src/main/java/com/github/lwhite1/tablesaw/api/CategoryColumn.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,4 +628,24 @@ public int byteSize() {
628628
public byte[] asBytes(int rowNumber) {
629629
return ByteBuffer.allocate(4).putInt(getInt(rowNumber)).array();
630630
}
631+
632+
public Selection isIn(String ... strings) {
633+
IntArrayList keys = new IntArrayList();
634+
for (String string : strings) {
635+
int key = lookupTable.get(string);
636+
if (key >= 0) {
637+
keys.add(key);
638+
}
639+
}
640+
641+
int i = 0;
642+
Selection results = new BitmapBackedSelection();
643+
for (int next : values) {
644+
if (keys.contains(next)) {
645+
results.add(i);
646+
}
647+
i++;
648+
}
649+
return results;
650+
}
631651
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.github.lwhite1.tablesaw.filtering.text;
2+
3+
import com.github.lwhite1.tablesaw.api.CategoryColumn;
4+
import com.github.lwhite1.tablesaw.api.Table;
5+
import com.github.lwhite1.tablesaw.columns.Column;
6+
import com.github.lwhite1.tablesaw.columns.ColumnReference;
7+
import com.github.lwhite1.tablesaw.filtering.ColumnFilter;
8+
import com.github.lwhite1.tablesaw.util.Selection;
9+
10+
import javax.annotation.concurrent.Immutable;
11+
12+
/**
13+
* A filtering that selects cells in which the string value is in the given array of strings
14+
*/
15+
@Immutable
16+
public class TextIsIn extends ColumnFilter {
17+
18+
private String[] strings;
19+
20+
public TextIsIn(ColumnReference reference, String ... strings) {
21+
super(reference);
22+
this.strings = strings;
23+
}
24+
25+
@Override
26+
public Selection apply(Table relation) {
27+
Column column = relation.column(columnReference().getColumnName());
28+
CategoryColumn textColumn = (CategoryColumn) column;
29+
return textColumn.isIn(strings);
30+
}
31+
}

src/test/java/com/github/lwhite1/tablesaw/api/CategoryColumnTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,15 @@ public void testStartsWith() {
8383
selection = categoryColumn.startsWith("T");
8484
assertEquals("Tennessee", categoryColumn.get(selection.get(0)));
8585
assertEquals("Texas", categoryColumn.get(selection.get(1)));
86+
}
8687

88+
@Test
89+
public void testIsIn() {
90+
CategoryColumn categoryColumn = CategoryColumn.create("US States");
91+
categoryColumn.addAll(TestDataUtil.usStates());
92+
Selection selection = categoryColumn.isIn("Alabama", "Texas");
93+
assertEquals("Alabama", categoryColumn.get(selection.get(0)));
94+
assertEquals("Texas", categoryColumn.get(selection.get(1)));
95+
assertEquals(2, selection.size());
8796
}
8897
}

0 commit comments

Comments
 (0)