java集合分析

java里的集合主要分为List set map
list下又有arrayList linkedList vector set下又有hashSet treeSet map下又有hashMap treeMap hashTable
List 和 set集合都是继承collection接口
list:元素有顺序的放入,元素可重复 和数组类型,list可以动态增长,查找元素效率高,插入删除元素效率较低,因为会引起其他元素位置改变
set:元素无顺序的放入,元素不可重复,重复元素会被覆盖掉 检索元素效率较低,删除和插入元素效率高,插入和删除元素不会引起其他元素位置改变
map适合存储键值对数据

ArrayList与LinkedList的区别和适用场景
arrayList:是实现了动态数组的数据结构,因为地址连续,一旦数据存储好了,查询效率会比较高,但插入和删除操作效率低
linkedList:是实现了链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,插入和删除操作比较快,但查询效率没有arrayList快,效率低
ArrayList与Vector的区别和适用场景
两者都是数组实现的 arrayList是多线程安全的,效率高 vector是多线程不安全的,是使用synchronizedz关键字修饰的,效率低 线程安全和线程不安全:开多线程操作同一个对象时是否会出现bug
HashSet与Treeset的适用场景
treeSet是二叉树(红黑树)实现的,treeSet是自动排好序,不允许存null值
hashSet是哈希表实现的,hashSet中的数据是无序的,可以存储null值,但只能放入一个null值,两者中的值都是不能重复的
hashset是基于hash算法实现的,性能通常优于treeSet,一般我们使用hashSet。但如果我们需要进行排序时就需要使用treeSet
HashMap与TreeMap、HashTable的区别及适用场景
hashMap非线程安全,基于哈希表实现,使用hashMap要求添加的键类明确定义了hashCode()和equals()方法。
treeMap非线程安全,基于红黑树实现,自然顺序或自定义顺序遍历键
hashTable线程安全,hashMap去掉了hashTable的contains方法,添加containsKey()和containsValue()方法,hashTable是同步的,不能存储空键值,而hashMap可以存储空键值。
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页