Java数据结构和算法
Java数据结构和算法
顾缘君兮
这个作者很懒,什么都没留下…
展开
-
HashSet 与TreeSet和LinkedHashSet的区别
HashSet 与TreeSet和LinkedHashSet的区别 本文转载自:https://www.cnblogs.com/wl0000-03/p/6019627.html Set接口 Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。 Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象。 HashSet与TreeSet都是基于Set接口的实现类。其中Tree转载 2020-12-10 18:16:05 · 426 阅读 · 0 评论 -
HashSet与HashMap的区别
HashSet与HashMap的区别 本文转载自:https://www.cnblogs.com/codercui/p/6841730.html HashSet: HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在 HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有 储存相同的对象。如果不重写上述两个方法,那么将使用下面方法默认实现: public boolean add(转载 2020-12-03 00:11:20 · 263 阅读 · 0 评论 -
HashMap
HashMap 概述 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。容量 是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量。加原创 2020-12-03 00:10:08 · 127 阅读 · 0 评论 -
LinkedList
LinkedList 概述 以双向链表实现。链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。 按下标访问元素—get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。 插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两头的操作—add(),addFirst(),removeLast()或用iterator()上的remove()能省掉指针的移动。 原理 参考博客:https:/原创 2020-12-03 00:09:01 · 150 阅读 · 0 评论 -
ArrayList
ArrayList 概述 以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。 按数组下标访问元素—get(i)/set(i,e) 的性能很高,这是数组的基本优势。直接在数组末尾加入元素—add(e)的性能也高,但如果按下标插入、删除元素—add(i,e), remove(i), remove(e),则要用System.arraycopy()来移动部分受影响的元素,原创 2020-12-03 00:07:16 · 88 阅读 · 0 评论 -
Java集合框架
Java集合框架 Java集合大致可以分为Set、List、Queue和Map四种。 Set是无序、不可重复的集合;List是有序、重复的集合;Map是具有映射关系的集合;Queue是队列集合。 1、Java集合和数组的区别 (1)数组长度在初始化时指定,意味着只能保存定长的数据。而集合可以保存数量不确定的数据,同时可以保存 具有映射关系的数据(即关联数组,键值对key-value) (2)数组元素既可以是基本类型的值,也可以是对象。集合里只能保存对象(实际上是保存对象的引用变量),原创 2020-12-03 00:05:27 · 142 阅读 · 0 评论