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

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变为线程安全

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

时间: 2024-10-25 21:08:19

ArrayList,LinkedList,Vector,Set,Map,List,HashMap,HashTable的相关文章

Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,Linke

java集合List、Set、Map总结 + HashMap/Hashtable区别

List:(有序,可以重复)通过下标索引 ----ArrayList  可变数组,随机查找 ----LinkedList    链表,任何位置插入删除快 ----Vector    效率比arraylist低,但是可以用于多线程同步 Set:(无序,不可以重复)set最多有一个null元素,因为不可以重复 ----HashSet    没有排序,不重复(顺序随机) ----LinkedHashSet    按插入排序,不重复(按插入顺序) ----TreeSet    实现Comparable接

List ArrayList LinkedList vector简介与区别

ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 Vector: 底层用数组实现List接口的另一个类 特点:重量级,占据更多的系统开销 线程安全 一.同步性 ArrayList,LinkedList是不同步的,而Vestor

ArrayList和Vector的区别?HashMap和HashTable的区别?StringBuilder、StringBuffer和String的区别?

ArrayList和Vector的区别?从两个方面 1.同步性:ArrayList是线程不安全的,是非同步的:Vector是线程安全的,是同步的.(Java中线程的同步也就满足了安全性) 2.数值增长:ArrayList每次增长为原来的50%;Vector每次增长为原来的100%; (从内部实现机制来讲,ArrayList和Vector都是使用数组(Array)来控制集合中的对象,当向集合中添加对象时,如果内部数组长度不够用时,长度会自动增长.ArrayList会增长为原来的1.5倍,Vecto

java集合: List、Set、Map总结 + HashMap/Hashtable 差别

List:(有序,能够反复)通过下标索引 ----ArrayList  可变数组,随机查找 ----LinkedList    链表,不论什么位置插入删除快 ----Vector    效率比arraylist低.可是能够用于多线程同步 Set:(无序,不能够反复)set最多有一个null元素.由于不能够反复 ----HashSet    没有排序,不反复(顺序随机) ----LinkedHashSet    按插入排序.不反复(按插入顺序) ----TreeSet    实现Comparabl

ArrayList LinkedList Vector

ArrayList是基于数组实现的,没有容量的限制. 在删除元素的时候,并不会减少数组的容量大小,可以调用ArrayList的trimeToSize()来缩小数组的容量. ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 Ve

Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

http://www.cnblogs.com/skywang12345/p/3311126.html 概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map

ArrayList/LinkedList/Vector源码分析

ArrayList public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable ArrayList继承了AbstractList,实现了List,表示ArrayList实现了线性表的所有功能,本质上是一个Object数组: ArrayList实现了RandomAccess接口,表示提供随机访问功能,A

比较Java数组,ArrayList,LinkedList,Vector 性能比较

public class PerformanceTester { public static final int TIMES=100000; public static abstract class Tester{ private String operation; public Tester(String operation){this.operation=operation;} public abstract void test(List<String> list); public Str