Программа в целом работает хорошо, все проходит как надо, НО, не всегда. Иногда в методе createMap происходит out of bounds exception. Пошаговый дебаг делал, но не смог выявить причину, может кто поопытнее сможет увидеть конкретный косяк. Заранее спасибо вам за ответы ;)
package com.javarush.task.task08.task0818;
import java.util.*;
import java.io.*;
/*
Только для богачей
*/
public class Solution {
public static Map<String, Integer> createMap() {
Map<String, Integer> map = new HashMap<>();
List<String> names = nameGenerator();
Random random = new Random();
for (int i = 0; i < 10; i++){
map.put(names.get(i), random.nextInt(1000));
}
return map;
}
public static void removeItemFromMap(Map<String, Integer> map) {
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry entry = iterator.next();
if ((int)entry.getValue() < 500){
iterator.remove();
}
}
}
public static void main(String[] args) {
Map<String, Integer> map = createMap();
for (Map.Entry<String, Integer> entry : map.entrySet()){
}
removeItemFromMap(map);
}
public static ArrayList<String> nameGenerator(){
String alphabet = "abcdefghijklmnopqrstuvwxyz";
Random ran = new Random();
List<String> names = new ArrayList<>();
for(int j = 0; j < 10; j++){
int n = ran.nextInt(9);
for (int i = 0; i < n; i++){
if(names.size()<j+1){
names.add(String.valueOf(alphabet.charAt(ran.nextInt(25))));
}
else {
names.set(j, names.get(j).concat(String.valueOf(alphabet.charAt(ran.nextInt(25)))));
}
}
}
return (ArrayList<String>) names;
}
}