From ca56aa97aa890f971c9841ee8ca17b02f4ad77e6 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 13 Aug 2008 20:32:48 +0000 Subject: [PATCH] Provide an immutable view of a DSet a Set for when you want to roll Java Collections style. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5319 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/presents/dobj/DSet.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/java/com/threerings/presents/dobj/DSet.java b/src/java/com/threerings/presents/dobj/DSet.java index 9cb480932..603250e02 100644 --- a/src/java/com/threerings/presents/dobj/DSet.java +++ b/src/java/com/threerings/presents/dobj/DSet.java @@ -23,9 +23,11 @@ package com.threerings.presents.dobj; import java.io.IOException; +import java.util.AbstractSet; import java.util.Comparator; import java.util.ConcurrentModificationException; import java.util.Iterator; +import java.util.Set; import com.samskivert.util.ArrayUtil; @@ -256,6 +258,31 @@ public class DSet return array; } + /** + * Creates an immutable view of this distributed set as a Java set. + */ + public Set toSet () + { + return new AbstractSet() { + @Override public boolean add (E o) { + throw new UnsupportedOperationException(); + } + @Override public boolean remove (Object o) { + throw new UnsupportedOperationException(); + } + @Override public boolean contains (Object o) { + @SuppressWarnings("unchecked") E elem = (E)o; + return DSet.this.contains(elem); + } + @Override public Iterator iterator () { + return DSet.this.iterator(); + } + @Override public int size () { + return DSet.this.size(); + } + }; + } + /** * @deprecated use {@link #toArray(Entry[])}. */