diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java
index 0aff5ab..ef6e78c 100644
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java
+++ b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java
@@ -151,8 +151,11 @@
 
     @Override
     public int hashCode() {
-        return Objects.hashCode(maxBandwidth, availBandwidth, maxAvailLspBandwidth,
-                                minAvailLspBandwidth, odu);
+        return Objects.hashCode(Arrays.hashCode(maxBandwidth),
+                Arrays.hashCode(availBandwidth),
+                Arrays.hashCode(maxAvailLspBandwidth),
+                Arrays.hashCode(minAvailLspBandwidth),
+                odu);
     }
 
     @Override
@@ -162,10 +165,10 @@
         }
         if (object instanceof LinkBandwidth) {
             LinkBandwidth that = (LinkBandwidth) object;
-            return Objects.equal(maxBandwidth, that.maxBandwidth) &&
-                    Objects.equal(availBandwidth, that.availBandwidth) &&
-                    Objects.equal(maxAvailLspBandwidth, that.maxAvailLspBandwidth) &&
-                    Objects.equal(minAvailLspBandwidth, that.minAvailLspBandwidth) &&
+            return Arrays.equals(maxBandwidth, that.maxBandwidth) &&
+                    Arrays.equals(availBandwidth, that.availBandwidth) &&
+                    Arrays.equals(maxAvailLspBandwidth, that.maxAvailLspBandwidth) &&
+                    Arrays.equals(minAvailLspBandwidth, that.minAvailLspBandwidth) &&
                     Objects.equal(odu, that.odu);
         }
         return false;
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
index de366ce..fd419ee 100644
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
+++ b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
@@ -119,7 +119,7 @@
     public int hashCode() {
         return Objects.hashCode(ttpId, switchingLayer, encodingLayer, flags,
                                 interLayerLockList, localLinkConnectivityList,
-                                availAdaptBandwidth);
+                                Arrays.hashCode(availAdaptBandwidth));
     }
 
     @Override
@@ -135,7 +135,7 @@
                     Objects.equal(flags, that.flags) &&
                     Objects.equal(interLayerLockList, that.interLayerLockList) &&
                     Objects.equal(localLinkConnectivityList, that.localLinkConnectivityList) &&
-                    Objects.equal(availAdaptBandwidth, that.availAdaptBandwidth);
+                    Arrays.equals(availAdaptBandwidth, that.availAdaptBandwidth);
         }
         return false;
     }
