/** * Creates a deep copy of this feature map using the given string objects. This method is usually * called form another deepCopy-method. * * @param stringObjs The string objects to be used. * @return A deep copy. */ FeatureMap deepCopy(HashMap<Integer, StringObject> stringObjs) { FeatureMap fm = new FeatureMap(); for (String feature : features.keySet()) { StringRef s = features.get(feature); StringObject se = stringObjs.get(s.getID()); if (se != null) { fm.setFeature(feature, se.newStringRef()); } else { StringRef sr = new StringRef(s.getString()); fm.setFeature(feature, sr); stringObjs.put(s.getID(), sr.getStringObject()); } } return fm; }
String getIdentifier(List<Integer> mvars, String[] usedFeatureNames) { String s = "("; int i = 0; for (String n : usedFeatureNames) { i++; if (!getFeatureNames().contains(n)) continue; StringRef v = getFeature(n); if (v.getString() == null) { if (mvars.contains(v.getID())) { s += i + ":" + mvars.indexOf(v.getID()) + ","; } } else { s += i + ":" + v.getString() + ","; } } return s + ")"; }
public String toString() { String s = ""; Set<String> featureKeys = features.keySet(); if (featureKeys.size() > 0) s += "("; for (String feature : new TreeSet<String>(features.keySet())) { // traverse the feature names in alphabetical order StringRef sr = features.get(feature); s += feature + ":"; if (sr.getString() == null) { s += sr.getID(); } else { s += sr.getString(); } s += ","; } if (featureKeys.size() > 0) { s = s.substring(0, s.length() - 1) + ")"; } return s; }