summaryrefslogtreecommitdiffstats
path: root/linguistics/src/main/java/com/yahoo/language/process/StemList.java
diff options
context:
space:
mode:
Diffstat (limited to 'linguistics/src/main/java/com/yahoo/language/process/StemList.java')
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/StemList.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/linguistics/src/main/java/com/yahoo/language/process/StemList.java b/linguistics/src/main/java/com/yahoo/language/process/StemList.java
new file mode 100644
index 00000000000..d355af87f08
--- /dev/null
+++ b/linguistics/src/main/java/com/yahoo/language/process/StemList.java
@@ -0,0 +1,61 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.process;
+
+import java.util.AbstractList;
+import java.util.ArrayList;
+
+/**
+ * A list of strings which does not allow for duplicate elements.
+ *
+ * @author steinar
+ */
+public class StemList extends AbstractList<String> {
+ private final ArrayList<String> stems;
+
+ public StemList() {
+ this(new String[0]);
+ }
+
+ public StemList(String... stems) {
+ super();
+ this.stems = new ArrayList<>(Math.max(stems.length, 3));
+ for (String word : stems) {
+ add(word);
+ }
+ }
+
+ @Override
+ public String get(int i) {
+ return stems.get(i);
+ }
+
+ @Override
+ public int size() {
+ return stems.size();
+ }
+
+ @Override
+ public String set(int i, String element) {
+ int existing = stems.indexOf(element);
+ if (existing >= 0 && existing != i) {
+ // the element already exists
+ return element;
+ } else {
+ return stems.set(i, element);
+ }
+ }
+
+ @Override
+ public void add(int i, String element) {
+ int existing = stems.indexOf(element);
+ if (existing < 0) {
+ stems.add(i, element);
+ }
+ }
+
+ @Override
+ public String remove(int i) {
+ return stems.remove(i);
+ }
+
+}