您的位置:首页 > 编程语言 > Java开发

java集合类,collection,list,set,map

2015-08-31 17:18 531 查看


list数组集合,set不允许有相同的值存入,map是键值对(key--value)。

list

       ArrayList和LinkedList的区别:

ArrayList:自动增长的数组,查询效率比较高,但是添加和删除效率比较低,如果一开始有大量的数据确定加入,而不是动态的添加,可以用ensureCapacity方法加入一下,这样效率可以高一点;

LinkedList:是用双向循环链表实现的,查询效率低,但添加和删除效率高;

都是线程不安全

        ArrayList和Vector的区别:

ArrayList:线程不安全,但相应的效率会高一点;

Vector:线程安全,同样相应的效率会低一点;

他们两个一旦数量超过原先规定的大小,动态增加的时候,不是只增加一个存储单元,而是一定量

set

set中怎么判断两个值是否相同? Object中equals和hashcode基本是所有类都要继承重写的方法,在set比较两个值的时候会用到;

首先会用hashcode()判断两个值是否相同,如果相同则调用equals()方法比较,如果也相同则代表两个值相同;(两个对象如果hashcode一样,.equals不一定一样;.equals一样,hashcode一定一样)

而Treeset不会用到这种方法

Treeset用的是comparator接口,而且Treeset中元素是排好序的,这个特点也是得益于comparator接口,comparatorTo()方法返回整型,如果当前对象大于参数对象就返回正数,等于就返回0,小于就返回负值

map:     

map中为key--value,遍历里的话:

先调用keyset()得到key的set集合;

遍历得到的key的集合;

根据key值得到value值;

        hashmap和hashtable的区别:

hashmap允许key为空,线程不安全,但效率较高;

hashtable不允许key为空,线程安全,效率较低,现在使用比较少;

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息