/plugins/Substance/trunk/substance-6.1/substance/src/org/pushingpixels/substance/internal/utils/HashMapKey.java

# · Java · 77 lines · 19 code · 5 blank · 53 comment · 1 complexity · aab5b4000d20cade3a461e20c583cd18 MD5 · raw file

  1. /*
  2. * Copyright (c) 2005-2010 Substance Kirill Grouchnikov. All Rights Reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are met:
  6. *
  7. * o Redistributions of source code must retain the above copyright notice,
  8. * this list of conditions and the following disclaimer.
  9. *
  10. * o Redistributions in binary form must reproduce the above copyright notice,
  11. * this list of conditions and the following disclaimer in the documentation
  12. * and/or other materials provided with the distribution.
  13. *
  14. * o Neither the name of Substance Kirill Grouchnikov nor the names of
  15. * its contributors may be used to endorse or promote products derived
  16. * from this software without specific prior written permission.
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  19. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  20. * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  21. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  22. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  23. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  24. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  25. * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  26. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  27. * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  28. * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. package org.pushingpixels.substance.internal.utils;
  31. import java.util.Arrays;
  32. /**
  33. * Implementation of a key for the {@link LazyResettableHashMap}.
  34. *
  35. * @author Kirill Grouchnikov
  36. */
  37. public class HashMapKey {
  38. /**
  39. * Fields that represent this key object.
  40. */
  41. private Object[] keyFields;
  42. /**
  43. * Creates a new key object.
  44. *
  45. * @param fields
  46. * Fields of the key object.
  47. */
  48. public HashMapKey(Object... fields) {
  49. this.keyFields = fields;
  50. }
  51. /*
  52. * (non-Javadoc)
  53. *
  54. * @see java.lang.Object#hashCode()
  55. */
  56. @Override
  57. public int hashCode() {
  58. return Arrays.deepHashCode(this.keyFields);
  59. }
  60. /*
  61. * (non-Javadoc)
  62. *
  63. * @see java.lang.Object#equals(java.lang.Object)
  64. */
  65. @Override
  66. public boolean equals(Object obj) {
  67. if (!(obj instanceof HashMapKey))
  68. return false;
  69. HashMapKey key2 = (HashMapKey) obj;
  70. return Arrays.equals(this.keyFields, key2.keyFields);
  71. }
  72. }