ObjectCounter.js 872 B

123456789101112131415161718192021222324252627282930313233343536
  1. import HashMap from '../../../../java/util/HashMap'
  2. export default class ObjectCounter {
  3. constructor() {
  4. ObjectCounter.constructor_.apply(this, arguments)
  5. }
  6. static constructor_() {
  7. this._counts = new HashMap()
  8. }
  9. count(o) {
  10. const counter = this._counts.get(o)
  11. if (counter === null) return 0; else return counter.count()
  12. }
  13. add(o) {
  14. const counter = this._counts.get(o)
  15. if (counter === null) this._counts.put(o, new Counter(1)); else counter.increment()
  16. }
  17. }
  18. class Counter {
  19. constructor() {
  20. Counter.constructor_.apply(this, arguments)
  21. }
  22. static constructor_() {
  23. this.count = 0
  24. if (arguments.length === 0) {} else if (arguments.length === 1) {
  25. const count = arguments[0]
  26. this.count = count
  27. }
  28. }
  29. count() {
  30. return this.count
  31. }
  32. increment() {
  33. this.count++
  34. }
  35. }
  36. ObjectCounter.Counter = Counter