java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java list与set中contains()方法效率

Java list与set中contains()方法效率案例详解

作者:小风的笔记

这篇文章主要介绍了Java list与set中contains()方法效率案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
// ArrayList 中的方法
public boolean contains(Object o) {
      return indexOf(o) >= 0;
}
 
public int indexOf(Object o) {
      if (o == null) {
          for (int i = 0; i < size; i++)
              if (elementData[i]==null)
                  return i;
      } else {
          for (int i = 0; i < size; i++)
              if (o.equals(elementData[i]))
                  return i;
      }
      return -1;
}
// HashSet 中的方法
public boolean add(E e) {
	 // PRESENT 是一个object对象
   return map.put(e, PRESENT)==null;
}
public boolean contains(Object o) {
      return map.containsKey(o);
}


//  HashMap 中的方法
public boolean containsKey(Object key) {
  	  return getNode(hash(key), key) != null;
}

final Node<K,V> getNode(int hash, Object key) {
	  Node<K,V>[] tab; Node<K,V> first, e; int n; K k;
	    if ((tab = table) != null && (n = tab.length) > 0 &&
	        (first = tab[(n - 1) & hash]) != null) {
	        if (first.hash == hash && // always check first node
	            ((k = first.key) == key || (key != null && key.equals(k))))
	            return first;
	        if ((e = first.next) != null) {
	            if (first instanceof TreeNode)
	                return ((TreeNode<K,V>)first).getTreeNode(hash, key);
	            do {
	                if (e.hash == hash &&
	                    ((k = e.key) == key || (key != null && key.equals(k))))
	                    return e;
	            } while ((e = e.next) != null);
	        }
	    }
	    return null;
}
//  getNode 方法同样也被hashMap中的get方法所调用
public V get(Object key) {
        Node<K,V> e;
        return (e = getNode(hash(key), key)) == null ? null : e.value;
}

到此这篇关于Java list与set中contains()方法效率案例详解的文章就介绍到这了,更多相关Java list与set中contains()方法效率内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文