@Override public double compare(final short[] h1, final short[] h2) { TShortHashSet union = new TShortHashSet(h1); union.addAll(h2); TShortHashSet intersection = new TShortHashSet(h1); intersection.retainAll(h2.clone()); //retainAll sorts the input, so we need to make a copy return 1.0 - (((double)intersection.size()) / (double)union.size()); } },
@Override public double compare(final short[] h1, final short[] h2) { TShortHashSet union = new TShortHashSet(h1); union.addAll(h2); TShortHashSet intersection = new TShortHashSet(h1); intersection.retainAll(h2.clone()); //retainAll sorts the input, so we need to make a copy return 1.0 - (((double)intersection.size()) / (double)union.size()); } },
@Override public double compare(final SparseShortArray h1, final SparseShortArray h2) { short[] h1v = h1.values(); short[] h2v = h2.values(); TShortHashSet union = new TShortHashSet(h1v); union.addAll(h2v); if (h1v.length != h1.length || h2v.length != h2.length) union.add((short)0); TShortHashSet intersection = new TShortHashSet(h1v); intersection.retainAll(h2v); if (h1v.length != h1.length && h2v.length != h2.length) union.add((short)0); return 1.0 - (((double)intersection.size()) / (double)union.size()); } },
@Override public double compare(final SparseShortArray h1, final SparseShortArray h2) { short[] h1v = h1.values(); short[] h2v = h2.values(); TShortHashSet union = new TShortHashSet(h1v); union.addAll(h2v); if (h1v.length != h1.length || h2v.length != h2.length) union.add((short)0); TShortHashSet intersection = new TShortHashSet(h1v); intersection.retainAll(h2v); if (h1v.length != h1.length && h2v.length != h2.length) union.add((short)0); return 1.0 - (((double)intersection.size()) / (double)union.size()); } },