|
|
|
package data;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
/*
|
|
|
|
Created for when words are sorted by multiple keys, i.e. not just lemmas but lemmas and msd simultaneously.
|
|
|
|
*/
|
|
|
|
public final class MultipleHMKeys2 implements MultipleHMKeys {
|
|
|
|
private final String k1, k2;
|
|
|
|
|
|
|
|
public MultipleHMKeys2(String k1, String k2) {
|
|
|
|
this.k1 = k1;
|
|
|
|
this.k2 = k2;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getK1() {
|
|
|
|
return k1;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getK2() {
|
|
|
|
return k2;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ArrayList<MultipleHMKeys> getSplittedMultipleHMKeys(){
|
|
|
|
ArrayList<MultipleHMKeys> r = new ArrayList<>();
|
|
|
|
String[] splitedK1 = k1.split("\\s+");
|
|
|
|
String[] splitedK2 = k2.split("\\s+");
|
|
|
|
for(int i = 0; i < splitedK1.length; i ++){
|
|
|
|
MultipleHMKeys search = new MultipleHMKeys2(splitedK1[i], splitedK2[i]);
|
|
|
|
r.add(search);
|
|
|
|
}
|
|
|
|
return r;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
|
|
|
return Objects.hash(k1, k2);
|
|
|
|
// return key.hashCode();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean equals(Object obj) {
|
|
|
|
return (obj instanceof MultipleHMKeys2) && ((MultipleHMKeys2) obj).k1.equals(k1)
|
|
|
|
&& ((MultipleHMKeys2) obj).k2.equals(k2);
|
|
|
|
|
|
|
|
// return (obj instanceof MultipleHMKeys) && ((MultipleHMKeys) obj).key.equals(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
public MultipleHMKeys[] splitNgramTo1grams(){
|
|
|
|
String[] k1 = getK1().split(" ");
|
|
|
|
String[] k2 = getK2().split(" ");
|
|
|
|
MultipleHMKeys[] res = new MultipleHMKeys[k1.length];
|
|
|
|
for(int i = 0; i < k1.length; i++){
|
|
|
|
res[i] = new MultipleHMKeys2(k1[i], k2[i]);
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
}
|