Во-первых, вы не должны использовать HashMap, потому что порядок итераций не определен.Либо используйте LinkedHashMap
, порядок итераций которого совпадает с порядком вставки (по крайней мере, он определен), либо используйте TreeMap
, порядок итераций которого является естественным порядком сортировки.Я бы порекомендовал LinkedHashMap, потому что вставка записи сделает нарезку карты непредсказуемой.
Чтобы разделить карту, используйте этот код:
LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer, String>();
for (Map.Entry<Integer, String> entry : new ArrayList<Map.Entry<Integer,String>>(map.entrySet()).subList(start, end)) {
Integer key = entry.getKey();
String value = entry.getValue();
// Do something with the entry
}
Я встроил код, но в развернутом виде это эквивалентно:
List<Map.Entry<Integer, String>> entryList = new ArrayList<Map.Entry<Integer,String>>();
entryList.addAll(map.entrySet());
entryList = entryList.subList(start, end); // You provide the start and end index
for (Map.Entry<Integer, String> entry : entryList) ...