I am trying to implement an OrderedMapEntry list with custom MapEntries - as I need a custom solution with Vectors I cannot use a TreeMap(http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html). I implemented a custom list without any errors, but when I use the OrderedMapEntries
class in an enhanced for loop it returns an Object
.
How can I ensure type safety when using an enhanced for loop? What my implementation is doing wrong in ensuring this type safety?
public class OrderedMapEntries<K, V> implements Iterator, Iterable{ private Vector<MapEntry<K, Vector<V>>> vector; private int vectorIndex; // initializes with -1 class MapEntry<A, B extends AbstractList<V>> implements Iterator, Iterable{ // MapEntry implementation public void insert(int index, K key, Vector<V> vec){ MapEntry<K, Vector<V>> mapEntry = new MapEntry<>(key, vec); vector.add(index, mapEntry); } @Override public MapEntry<K, Vector<V>> next(){ vectorIndex++; return vector[vectorIndex]; } }
I tried to iterate over the collection with an enhanced for loop, but it fails as next() returns an Object and not my specified element.
OrderedMapEntries<Integer, String> ome = new OrderedMapEntries<>();
// I filled it with some test data
for (OrderedMapEntries<Integer, String>.MapEntry<Integer, Vector<String>> entry : ome){
;
}