Предположим, у меня есть строка "abca"
. Я хочу отслеживать каждое вхождение алфавита в каждом индексе, используя HashMap & ArrayList в Java. Например, если a = 0, b = 1, c = 2, я хочу вывод, как показано ниже: для ввода: abca
[{0=1},{0=1, 1=1},{0=1, 1=1, 2=1},{0=2, 1=1, 2=1}];
Я написал это решение в Java:
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String x = in.next();
char a[] = x.toCharArray();
HashMap<Integer,Integer> hm = new HashMap();
ArrayList<HashMap<Integer,Integer>> list = new ArrayList();
for(int i=0;i<a.length;i++){
if(hm.get((int)a[i]-97)==null){
hm.put((int)a[i]-97, 1);
}
else{
int pow = hm.get((int)a[i]-97);
pow++;
hm.put((int)a[i]-97, pow);
}
list.add(hm);
// System.out.println(list);
}
System.out.println(list);
}
Но я получаю вывод в виде:
[{0=2, 1=1, 2=1}, {0=2, 1=1, 2=1}, {0=2, 1=1, 2=1}, {0=2, 1=1, 2=1}]
В конце итерации ArrayList обновляет все индексы последней стадии HashMap.