From 3879b52223cd3241f25dec75c7d64a10e0d3e8ac Mon Sep 17 00:00:00 2001 From: fujie <405295521@qq.com> Date: Sun, 19 Nov 2017 20:42:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=E6=8F=90=E5=8D=87dataset=E7=9A=84in?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E7=9A=84=E6=80=A7=E8=83=BD=E3=80=82?= =?UTF-8?q?2.=E5=A2=9E=E5=8A=A0remove=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=EF=BC=88=E4=BD=BF=E7=94=A8in=E8=A1=A8=E8=BE=BE?= =?UTF-8?q?=E5=BC=8F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/in/DataSetColumnInProcessor.java | 47 ++++++++++++++++--- .../dataSetExample/dataSetRemove.tsf | 6 +++ 2 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 org.tinygroup.tinyscript/src/test/resources/dataSetExample/dataSetRemove.tsf diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java index 9290b92..02bbc72 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java @@ -1,10 +1,16 @@ package org.tinygroup.tinyscript.dataset.in; +import java.util.HashSet; +import java.util.Set; + import org.tinygroup.tinyscript.dataset.DataSetColumn; +import org.tinygroup.tinyscript.dataset.Field; import org.tinygroup.tinyscript.expression.InExpressionProcessor; public class DataSetColumnInProcessor implements InExpressionProcessor { + private DataSetColumnCache colCache; + @Override public boolean isMatch(Object collection) throws Exception { return collection instanceof DataSetColumn; @@ -13,13 +19,42 @@ public class DataSetColumnInProcessor implements InExpressionProcessor { @Override public boolean checkIn(Object collection, Object item) throws Exception { DataSetColumn colData = (DataSetColumn) collection; - for (int i = 0; i < colData.getRows(); i++) { - if (item == colData.getData(colData.isIndexFromOne() ? i + 1 : i) - || item.equals(colData.getData(colData.isIndexFromOne() ? i + 1 : i))) { - return true; - } + if (colCache == null || !colCache.getField().equals(colCache.getField())) { + colCache = new DataSetColumnCache(colData); } - return false; + return colCache.checkData(item); } + class DataSetColumnCache { + private Field field; + private Set colCache; + + DataSetColumnCache(DataSetColumn colData) throws Exception { + colCache = new HashSet(); + for (int i = 0; i < colData.getRows(); i++) { + colCache.add(colData.getData(colData.isIndexFromOne() ? i + 1 : i)); + } + this.field = colData.getField(); + } + + public boolean checkData(Object item) { + return colCache.contains(item); + } + + public Field getField() { + return field; + } + + public void setField(Field field) { + this.field = field; + } + + public Set getColCache() { + return colCache; + } + + public void setColCache(Set colCache) { + this.colCache = colCache; + } + } } diff --git a/org.tinygroup.tinyscript/src/test/resources/dataSetExample/dataSetRemove.tsf b/org.tinygroup.tinyscript/src/test/resources/dataSetExample/dataSetRemove.tsf new file mode 100644 index 0000000..27a83ea --- /dev/null +++ b/org.tinygroup.tinyscript/src/test/resources/dataSetExample/dataSetRemove.tsf @@ -0,0 +1,6 @@ +dataSet = readTxt("/dataSetExample/data1.txt"); +dataSet1 = readTxt("/dataSetExample/data2.txt"); +println(dataSet.remove(()->{ + return name in dataSet1.name; +})); + -- Gitee From b2c0868e6eb97e26412f7012610343fce302c2d8 Mon Sep 17 00:00:00 2001 From: fujie <405295521@qq.com> Date: Sun, 19 Nov 2017 20:56:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tinyscript/dataset/in/DataSetColumnInProcessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java index 02bbc72..64f363d 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/in/DataSetColumnInProcessor.java @@ -22,7 +22,7 @@ public class DataSetColumnInProcessor implements InExpressionProcessor { if (colCache == null || !colCache.getField().equals(colCache.getField())) { colCache = new DataSetColumnCache(colData); } - return colCache.checkData(item); + return colCache.isExist(item); } class DataSetColumnCache { @@ -37,7 +37,7 @@ public class DataSetColumnInProcessor implements InExpressionProcessor { this.field = colData.getField(); } - public boolean checkData(Object item) { + public boolean isExist(Object item) { return colCache.contains(item); } -- Gitee