form http://doc.qt.io/qt-5/qmapiterator.html
The first call to next() advances the iterator to the position between the first and second item, and returns the first item;
so first call to next returns the first item (0), the second call returns the second item (1) the first call to previous returns the first item again (1)
using this image:
Java Iterator Image
next and previous return the item they jumped over so if you call next 1 time it returns A as it jumps over A, the second time it jumps over B, if you then call previous it jumps over B again so it returns b again