Add getSources and getDestinations
This commit is contained in:
parent
326f80fc68
commit
bd80576306
@ -1,5 +1,6 @@
|
|||||||
package org.warp.commonutils.type;
|
package org.warp.commonutils.type;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -101,6 +102,18 @@ public interface Association<T, U> {
|
|||||||
*/
|
*/
|
||||||
int size();
|
int size();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the sources
|
||||||
|
* @return Set of sources
|
||||||
|
*/
|
||||||
|
ObjectSet<T> getSources();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the destinations
|
||||||
|
* @return Set of destinations
|
||||||
|
*/
|
||||||
|
ObjectSet<U> getDestinations();
|
||||||
|
|
||||||
static <T, U> Association<T, U> synchronize(Association<T, U> association) {
|
static <T, U> Association<T, U> synchronize(Association<T, U> association) {
|
||||||
return new SynchronizedAssociation(association);
|
return new SynchronizedAssociation(association);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.warp.commonutils.type;
|
package org.warp.commonutils.type;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -100,6 +101,18 @@ public interface BiAssociation<T, U> {
|
|||||||
*/
|
*/
|
||||||
int size();
|
int size();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the sources
|
||||||
|
* @return Set of sources
|
||||||
|
*/
|
||||||
|
ObjectSet<T> getSources();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the destinations
|
||||||
|
* @return Set of destinations
|
||||||
|
*/
|
||||||
|
ObjectSet<U> getDestinations();
|
||||||
|
|
||||||
static <T, U> BiAssociation<T, U> synchronize(BiAssociation<T, U> association) {
|
static <T, U> BiAssociation<T, U> synchronize(BiAssociation<T, U> association) {
|
||||||
return new SynchronizedBiAssociation(association);
|
return new SynchronizedBiAssociation(association);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package org.warp.commonutils.type;
|
|||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
|
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -156,6 +157,16 @@ public class HashAssociation<T, U> implements Association<T, U> {
|
|||||||
return inverseAssociations.size();
|
return inverseAssociations.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<T> getSources() {
|
||||||
|
return associations.clone().keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<U> getDestinations() {
|
||||||
|
return inverseAssociations.clone().keySet();
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||||
@Override
|
@Override
|
||||||
public HashAssociation<T, U> clone() {
|
public HashAssociation<T, U> clone() {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.warp.commonutils.type;
|
package org.warp.commonutils.type;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -134,6 +135,16 @@ public class HashBiAssociation<T, U> implements BiAssociation<T, U> {
|
|||||||
return inverseAssociations.size();
|
return inverseAssociations.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<T> getSources() {
|
||||||
|
return associations.clone().keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<U> getDestinations() {
|
||||||
|
return inverseAssociations.clone().keySet();
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||||
@Override
|
@Override
|
||||||
public HashBiAssociation<T, U> clone() {
|
public HashBiAssociation<T, U> clone() {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.warp.commonutils.type;
|
package org.warp.commonutils.type;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -94,4 +95,18 @@ public final class SynchronizedAssociation<T, U> implements Association<T, U> {
|
|||||||
return association.size();
|
return association.size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<T> getSources() {
|
||||||
|
synchronized (lock) {
|
||||||
|
return association.getSources();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<U> getDestinations() {
|
||||||
|
synchronized (lock) {
|
||||||
|
return association.getDestinations();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.warp.commonutils.type;
|
package org.warp.commonutils.type;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public final class SynchronizedBiAssociation<T, U> implements BiAssociation<T, U> {
|
public final class SynchronizedBiAssociation<T, U> implements BiAssociation<T, U> {
|
||||||
@ -93,4 +94,18 @@ public final class SynchronizedBiAssociation<T, U> implements BiAssociation<T, U
|
|||||||
return association.size();
|
return association.size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<T> getSources() {
|
||||||
|
synchronized (lock) {
|
||||||
|
return association.getSources();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ObjectSet<U> getDestinations() {
|
||||||
|
synchronized (lock) {
|
||||||
|
return association.getDestinations();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user