+
+ /**
+ * Return the results as a string of characters (bases). Meant for use when
+ * the context ensures that all matches are to regions of the same sequence
+ * (otherwise the result is meaningless).
+ *
+ * @return
+ */
+ public String getCharacters()
+ {
+ StringBuilder result = new StringBuilder(256);
+ for (Match m : matches)
+ {
+ result.append(m.getCharacters());
+ }
+ return result.toString();
+ }
+
+ /**
+ * Hashcode is has derived from the list of matches. This ensures that when
+ * two SearchResults objects satisfy the test for equals(), then they have the
+ * same hashcode.
+ */
+ @Override
+ public int hashCode()
+ {
+ return matches.hashCode();
+ }
+
+ /**
+ * Two SearchResults are considered equal if they contain the same matches in
+ * the same order.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == null || !(obj instanceof SearchResults))
+ {
+ return false;
+ }
+ SearchResults sr = (SearchResults) obj;
+ return ((ArrayList<Match>) this.matches).equals(sr.matches);
+ }