Re: hash map / collection choice
On 4/27/2014 12:58 PM, Philipp Kraus wrote:
A set should be the correct structure, but I can not get the object
itself of the map without iteration over all
items. A HashMap needs a key, value pair, so I need also a key class
If you'd prefer a set, I'd just make one. It isn't that much trouble to
do so. The implementation might be a little slow, but if it gives you
trouble then you just have to optimize it more. Most time code like
this won't be the bottle-neck.
Not tested. I've renamed your get method to "findById", and you'll need
a proper hash/equals method, one that compares all fields in MyEdge, for
this to work 100%.
package quicktest;
import java.util.AbstractSet;
import java.util.HashMap;
import java.util.Iterator;
public class MySet extends AbstractSet<MyEdge>
{
private final HashMap<Integer,MyEdge> map = new HashMap<>();
@Override
public Iterator iterator() {
return map.values().iterator();
}
@Override
public int size() {
return map.size();
}
@Override
public boolean add( MyEdge edge ) { // edge @NotNull
MyEdge temp = map.get( edge.getID() );
map.put( edge.getID(), edge);
return !edge.equals( temp );
}
public MyEdge findById( int id ) {
return map.get(id);
}
}
// Dummy for compilation
class MyEdge{
public int getID() {return 0;}
}