私は以下のような地図を持っています-
ConcurrentHashMap<Long, AtomicLong> histogram = new ConcurrentHashMap<Long, AtomicLong>();
このマップには、多くのキーと値のペアが含まれています。値としてを置くAtomicLong
ことが必要だったので、それが私がそのマップにそのように置いた理由です。
したがってConcurrentHashMap
、上記のことを繰り返し実行しようとすると、常にこの行でエラーが発生します-
buckets[i] += histogram.get(time);
なので-The operator += is undefined for the argument type(s) int, AtomicLong
この問題を解決するにはどうすればよいですか?戻ってデータ構造をandInteger
ではなくallに変更することはできません。Long
AtomicLong
だから私はそれが動作し始めるように以下のコードで変更を加える方法を見つける必要があります。整数にキャストすることを考えていました。しかし、それも機能していませんでした。
以下は私のコードです
private static void logHistogramInfo() {
System.out.println("From Main Thread: " + histogram);
int[] definition = { 0, 20, 40, 60, 80, 100 };
int[] buckets = new int[definition.length];
for (Long time : histogram.keySet()) {
for (int i = definition.length - 1; i >= 0; i--) {
if (time >= definition[i]) {
//error on the below line
buckets[i] += histogram.get(time);
break;
}
}
}
for (int i = 0; i < definition.length; i++) {
String period = "";
if (i == definition.length - 1) {
period = "greater than " + definition[i] + "ms";
} else {
period = "between " + (definition[i] + 1) + " and " + definition[i + 1] + "ms";
}
System.out.println(buckets[i] + " came back " + period);
}
}