Вы можете сделать что-то вроде этого:
uniqueCount = ['a','b','c','d','d','e','a','b','c','f','g','h','h','h','e','a'];
var map = new Object();
for(var i = 0; i < uniqueCount.length; i++) {
if(map[uniqueCount[i]] != null) {
map[uniqueCount[i]] += 1;
} else {
map[uniqueCount[i]] = 1;
}
}
теперь у вас есть карта со всеми значениями символов
Думаю, вам это может показаться интересным. Это java-агент, который добавляет к методам ведение журнала входа и выхода, используя структуру slf4j для фактического ведения журнала вывода. Затем необходимо настроить структуру ведения журнала, чтобы распечатать только тот поток, который вас интересует.
http://www.slf4j.org/extensions.html#javaagent
(для ясности: 1) Написал, 2) у меня работает :))
При использовании IntelliJ существует сменный названный Flameviewer. Найдите больше деталей о ссылке ниже,
https://github.com/kornilova-l/FlameViewer#uploading-file-to-flameviewer
По сути, вам нужно аспектно-ориентированное программирование некоторой формы, где аспект может определять, предназначен ли текущий поток для регистрации вызовов. (Альтернативой является явное занесение журнала в каждый метод самостоятельно, что было бы болезненно.)
В Java существует множество фреймворков АОП, таких как AspectJ и Spring ( Конечно, Spring - это намного больше, чем АОП).
Применение аспектов к каждому вызову метода в системе может быть непростым делом ... У меня нет опыта работы с AspectJ, но Spring AOP - это в основном предназначен для включения АОП вокруг компонентов. Классы, которые фактически неизвестны Spring, не могут быть легко изменены. Имейте в виду, я давно не использовал даже Spring AOP - с тех пор, возможно, что-то получилось :)
Мы могли бы создать новый объект Throwable, который будет иметь трассировку вызовов. И, используя некоторые строковые манипуляции, мы можем получить стек вызовов.
Throwable t = new Throwable();
System.out.println(t.getStackTrace()[1].toString());
Я не уверен, что получение информации таким образом является хорошей практикой или нет. :)
Runtime.traceMethodCalls ()
, который выводит строку для каждого вызова метода всех объектов во всех потоках