QNameWithPredicateBuilder should use an ArrayList
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / leafref / QNameWithPredicateBuilder.java
index 6a9b2d7dc9e6392b1e03bab7fad5fc28259fa1a4..bef27ff45aec3fc53288d7929b41953e9a31792c 100644 (file)
@@ -7,13 +7,14 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.leafref;
 
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 
 class QNameWithPredicateBuilder {
 
-    private List<QNamePredicate> qnamePredicates;
+    private final List<QNamePredicate> qnamePredicates = new ArrayList<>();
     private QNameModule moduleQname;
     private String localName;
 
@@ -28,15 +29,14 @@ class QNameWithPredicateBuilder {
     public QNameWithPredicateBuilder(final QNameModule moduleQname, final String localName) {
         this.moduleQname = moduleQname;
         this.localName = localName;
-        this.qnamePredicates = new LinkedList<>();
     }
 
     public QNameWithPredicate build() {
         final QNameWithPredicateImpl qNameWithPredicateImpl = new QNameWithPredicateImpl(
                 moduleQname, localName, qnamePredicates);
 
-        this.qnamePredicates = new LinkedList<>();
-
+        // QNameWithPredicateImpl has taken a copy
+        qnamePredicates.clear();
         return qNameWithPredicateImpl;
     }
 
@@ -74,20 +74,13 @@ class QNameWithPredicateBuilder {
             return false;
         }
         final QNameWithPredicateBuilder other = (QNameWithPredicateBuilder) obj;
-        if (localName == null) {
-            if (other.localName != null) {
-                return false;
-            }
-        } else if (!localName.equals(other.localName)) {
-            return false;
-        }
-        return moduleQname.equals(other.moduleQname);
+        return Objects.equals(localName, other.localName) &&  moduleQname.equals(other.moduleQname);
     }
 
     @Override
     public int hashCode() {
         int result = moduleQname != null ? moduleQname.hashCode() : 0;
-        result = 31 * result + (localName != null ? localName.hashCode() : 0);
+        result = 31 * result + Objects.hashCode(localName);
         return result;
     }