美文网首页
每天进步一点系列一:java的集合类的差别

每天进步一点系列一:java的集合类的差别

作者: 码农一声吼 | 来源:发表于2017-07-19 15:36 被阅读0次

java集合的体系结构

List、Set、Map是这个集合体系中最主要的三个接口。

其中List和Set继承自Collection接口。

Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。

List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。

Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能

重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。

SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序

1、Collection、Set和List的区别

Collection对象之间没有指定的顺序,允许有重复元素和多个null元素对象;它是Set和List接口的父类,是一种最通用型的集合接口;

Set各个元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个null元素对象;

List各个元素对象之间有指定的顺序,允许重复元素和多个null元素对象;

2.LinkedList,ArrayList,Vector区别?

1)LinkedList链式访问,以指针相连,适合于在链表中间需要频繁进行插入和删除操作。

2)ArrayList类似数组的形式,按照序号存储,随机访问速度非常快。

3)Vector向量按照各元素序号存储,数组大小可以动态增长,对于大容量数据存储效率较高。

这些类的对比与选择:

对于需要快速插入删除元素,应该使用Linkedlist

如果需要快速随机访问元素,应该选用Arraylist

如果程序在单线程环境中,选用非同步类Linkedlist、Arraylist

如果在多线程中,选用同步类vecto及其子类。

3、ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?

Vector和HashTable是线程同步的(synchronized)。

性能上,ArrayList和HashMap分别比Vector和Hashtable要好。

List 是有序的

4、HashMap,HashTable,TreeMap,WeakHashMap的区别?ConcurrentHashMap区别?

HashTable:

(1)是一个包含单向链的二维数组,table数组中是Entry存储,entry对象;

(2)放入的value不能为空;

(3)线程安全的,所有方法均用synchronized修饰;

(4)枷锁是锁整个hash表;

HashMap:

(1)相当于HashTable的升级版本;

(2)可以放入空值;

(3)基于hash表实现;

(4)按插入的顺序存储;

(5)线程不安全;

TreeMap :

(1)基于红黑树实现;

(2)是有序的存储;

(3)自己可以定义排序器;

ConcurrentHashMap:

(1)放入的value不能为空;

(2)线程安全的;

(3)当多线程对ConcurrentHashMap 操作时,不是完全锁住map, 而是锁住相应的

         segment,并发高于hashtable;

(4)遍历性能低于hashMap;

WeakHashMap:

(1)HashMap的增强类,当key被回收时,可自动删除对应key的那条记录;

(2)其它同HashMap

Comparable接口与Comparator接口主要区别

1、前者是强行对是实现它的每个类的对象进行整体排序,此类被称为该类的自然排序,类的compareTo方法被称为它的自然比较方法,实现此接口的对象列表和(数组)可以通过Collections.sort()或者Arrays.sort()进行自动排序。

2、Comparator位于包Java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。 如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过  Comparator来实现比较算法进行排序,并且为了使用不同的排序标准做准备,比如:升序、降序。

示例:

Comparable接口

相关文章

网友评论

      本文标题:每天进步一点系列一:java的集合类的差别

      本文链接:https://www.haomeiwen.com/subject/xevlkxtx.html