Z tego co się zorientowałem po Twoim kodzie, chciałbyś wprowadzić jakąś konkretną ilość danych do struktury. Mógłbyś wykorzystać pętlę podobną do Twojej:
for(int i=0; i<=mapa.size(); i++){
String a = in.next();
Integer b = in.nextInt();
mapa.put(a,b);
}
wystarczyłoby poprosić użytkownika o wpisanie ilości danych jakie będzie chciał on wpisywać, a następnie pobranie ich tyle razy:
int n = in.nextInt();
for (int i = 0; i < n; ++i) {
String a = in.next();
Integer b = in.nextInt();
mapa.put(a, b);
}
Twój warunek mapa.size() nie sprawdziłby się, ponieważ przed putowaniem mapa będzie pusta i metoda ta zwróciłaby 0.
Jeśli jednak chcesz bez podawania ilości na początku, możesz po prostu zamienić powyższego fora na while'a, w którym sprawdzasz czy a nie jest czasem tym "-":
String a = in.next();
Integer b;
while (!a.equals("-")) {
b = in.nextInt();
mapa.put(a, b);
a = in.next();
}