/** * Compute the union of two sets. * * @param a The first set. * @param b The second set. * @return The elements of <var>items</var> that are not in <var>exclude</var>. */ public static LongSortedSet setUnion(LongSet a, LongSet b) { if (a instanceof LongSortedSet && b instanceof LongSortedSet) { return setUnion((LongSortedSet) a, (LongSortedSet) b); } else { LongSet set = new LongOpenHashSet(a); set.addAll(b); return packedSet(set); } }
@Test public void testSetUnionEmptySS() { assertThat(setUnion(LongSortedSets.EMPTY_SET, LongSortedSets.EMPTY_SET), hasSize(0)); }
@Test public void testSetUnionSame() { LongSortedSet set = packedSet(5, 3, 27); assertThat(setUnion(set, set), contains(3L, 5L, 27L)); }
@Test public void testSetUnionDistinctEqual() { LongSortedSet s1 = packedSet(5, 3, 27); LongSortedSet s2 = new LongAVLTreeSet(s1); assertThat(setUnion(s1, s2), contains(3L, 5L, 27L)); }
@Test public void testSetUnionInterleaved() { LongSortedSet s1 = packedSet(1, 3, 5); LongSortedSet s2 = packedSet(2, 4, 6); assertThat(setUnion(s1, s2), contains(1L, 2L, 3L, 4L, 5L, 6L)); }
@Test public void testSetUnionCommon() { LongSortedSet s1 = packedSet(1, 3, 5); LongSortedSet s2 = packedSet(2, 3, 4); assertThat(setUnion(s1, s2), contains(1L, 2L, 3L, 4L, 5L)); }
@Test public void testSetUnionNoOverlap() { LongSortedSet s1 = packedSet(1, 2, 3); LongSortedSet s2 = packedSet(4, 5, 6); assertThat(setUnion(s1, s2), contains(1L, 2L, 3L, 4L, 5L, 6L)); }
@Test(timeout=500) public void testSetUnionIncludeMaxLong() { LongSortedSet s1 = packedSet(1, 2, 3, Long.MAX_VALUE); LongSortedSet s2 = packedSet(4, 5, 6); assertThat(setUnion(s1, s2), contains(1L, 2L, 3L, 4L, 5L, 6L, Long.MAX_VALUE)); }
@Test(timeout=500) public void testSetUnionIncludeMaxLongSetB() { LongSortedSet s1 = packedSet(1, 2, 3); LongSortedSet s2 = packedSet(4, 5, 6, Long.MAX_VALUE); assertThat(setUnion(s1, s2), contains(1L, 2L, 3L, 4L, 5L, 6L, Long.MAX_VALUE)); }
@Test public void testSetUnionCompatLSAS() { SortedKeyIndex lkd = SortedKeyIndex.create(5, 3, 27); assertThat(setUnion(lkd.keySet(), lkd.keySet()), contains(3L, 5L, 27L)); }
@Test public void testSetUnionEmptyLSAS() { SortedKeyIndex kd = SortedKeyIndex.empty(); assertThat(setUnion(kd.keySet(), kd.keySet()), hasSize(0)); }
@Test public void testRandomMaps() { for (Map<Long,Double> map: someMaps(longs(), doubles())) { Long2DoubleSortedArrayMap vec = Long2DoubleSortedArrayMap.create(map); Set<Long> picked = sets(map.keySet()).next(); Set<Long> extra = sets(longs()).next(); LongSortedSet wanted = LongUtils.setUnion(LongUtils.asLongSet(picked), LongUtils.asLongSet(extra)); Long2DoubleSortedMap sv = vec.subMap(wanted); assertThat(sv.keySet(), everyItem(isIn(wanted))); assertThat(sv.keySet(), containsInAnyOrder(picked.toArray())); assertThat(sv.entrySet(), everyItem(isIn(map.entrySet()))); } }
/** * Compute the union of two sets. * * @param a The first set. * @param b The second set. * @return The elements of <var>items</var> that are not in <var>exclude</var>. */ public static LongSortedSet setUnion(LongSet a, LongSet b) { if (a instanceof LongSortedSet && b instanceof LongSortedSet) { return setUnion((LongSortedSet) a, (LongSortedSet) b); } else { LongSet set = new LongOpenHashSet(a); set.addAll(b); return packedSet(set); } }