jaccardSimilarity<T> function
Symmetric Jaccard similarity: |A ∩ B| / |A ∪ B|.
Returns 1.0 for identical (and identically-empty) sets, 0.0 for disjoint.
Implementation
double jaccardSimilarity<T>(Set<T> a, Set<T> b) {
if (a.isEmpty && b.isEmpty) return 1.0;
final union = a.union(b);
if (union.isEmpty) return 0.0;
return a.intersection(b).length / union.length;
}