diff --git a/core/api/src/main/java/org/onosproject/net/flow/IndexTableId.java b/core/api/src/main/java/org/onosproject/net/flow/IndexTableId.java
index fab2463..7b49d98 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/IndexTableId.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/IndexTableId.java
@@ -32,6 +32,16 @@
         return Type.INDEX;
     }
 
+    @Override
+    public int compareTo(TableId other) {
+        if (this.type() != other.type()) {
+            return this.type().compareTo(other.type());
+        } else {
+            IndexTableId indexTableId = (IndexTableId) other;
+            return this.id() - indexTableId.id();
+        }
+    }
+
     /**
      * Returns a table identifier for the given index.
      *
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TableId.java b/core/api/src/main/java/org/onosproject/net/flow/TableId.java
index bb2dda1..fb115f6 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TableId.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TableId.java
@@ -36,5 +36,18 @@
         PIPELINE_INDEPENDENT
     }
 
+    /**
+     * Gets type of this table ID.
+     *
+     * @return type
+     */
     Type type();
+
+    /**
+     * Compares table ID.
+     *
+     * @param other table ID to be compared
+     * @return zero if the table IDs are the same. Otherwise, return a non-zero integer
+     */
+    int compareTo(TableId other);
 }
diff --git a/core/api/src/main/java/org/onosproject/net/pi/model/PiTableId.java b/core/api/src/main/java/org/onosproject/net/pi/model/PiTableId.java
index 2e799a9..f817e31 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/model/PiTableId.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/model/PiTableId.java
@@ -49,4 +49,16 @@
     public Type type() {
         return Type.PIPELINE_INDEPENDENT;
     }
+
+    @Override
+    public int compareTo(TableId other) {
+        if (this.type() != other.type()) {
+            return this.type().compareTo(other.type());
+        } else {
+            PiTableId piTableId = (PiTableId) other;
+            checkNotNull(this.identifier, "PiTableId identifier should not be null");
+            checkNotNull(piTableId.identifier, "PiTableId identifier should not be null");
+            return this.identifier.compareTo(piTableId.identifier);
+        }
+    }
 }
diff --git a/core/common/src/main/java/org/onosproject/utils/Comparators.java b/core/common/src/main/java/org/onosproject/utils/Comparators.java
index b509012..20a4497 100644
--- a/core/common/src/main/java/org/onosproject/utils/Comparators.java
+++ b/core/common/src/main/java/org/onosproject/utils/Comparators.java
@@ -62,14 +62,14 @@
     public static final Comparator<FlowRule> FLOW_RULE_COMPARATOR =
             (f1, f2) -> {
                 // Compare table IDs in ascending order
-                int tableCompare = f1.tableId() - f2.tableId();
+                int tableCompare = f1.table().compareTo(f2.table());
                 if (tableCompare != 0) {
                     return tableCompare;
                 }
                 // Compare priorities in descending order
                 int priorityCompare = f2.priority() - f1.priority();
                 return (priorityCompare == 0)
-                        ? Long.valueOf(f1.id().value()).compareTo(f2.id().value())
+                        ? Long.compare(f1.id().value(), f2.id().value())
                         : priorityCompare;
             };
 
