码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayList,LinkedList,Vector,Set,Map,List,HashMap,HashTable

时间:2018-09-20 01:02:28      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:hash   null   linked   arraylist   getc   png   info   图片   集合类   

java集合类只要有两个接口派生而出.Collection和Map.  其中set和List分别代表无序集合与有序集合.

技术分享图片

下图为Map体系集合数技术分享图片

 

 

HashSet具有一下特点: 不能保证排序顺列, HashSet不是同步的,

如果多个线程同时访问一个HashSet.假设有两个以上线程同时修改HashSet的值时,需要通过代码使其同步.

当向HashSet里面添加元素时,HashSet会调用该对象的HashCode()方法来获取HashCode值. 如果两个元素通过equals()方法比较返回true,它们的HashCode值不等,HashSet也会存储在不同位置,添加成功.所以我们需要重写该对象的HashCode方法和equals方法.

public boolean equals(Object obj){

if(this == obj){

return true;

if(null != obj && obj.getClass() == Class.class){

Class class = (Class)obj

}}}

public int hashCode(){

return this.hashCode();

}

HashSet 还有一个子类,LinkedHashSet ,LinkedHashSet也是根据元素的hashCode值来决定元素的存储位置.但他同时使用连表维护元素次序,所以它是有序的.由于LinkedHashSet需要维护元素的插入顺序,所以它的性能略低于HashSet,

TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态,TreeSet并不是根据元素的插入顺序进行排序的.而是根据元素的实际值进行排序.treeSet只能添加同一种类型的对象.在自然排序时,集合元素必须实现Comparable接口

如果有多个线程同时访问一个Set集合,则可以通过Collection工具类的synchronizedSortedSet方法来"包装"该Set集合.

SortedSet s =Collections.synchronizedSortedSet(new TreeSet(...));

ArrayList和Vector的区别: ArrayList是线程不安全的,Vector是线程安全的. ,即使需要保证List的线程安全,也不推荐使用Vector,Collections工具类的方法可以将ArrayList变为线程安全

ArrayList,LinkedList,Vector,Set,Map,List,HashMap,HashTable

标签:hash   null   linked   arraylist   getc   png   info   图片   集合类   

原文地址:https://www.cnblogs.com/fangqideagan/p/9678325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!