A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Jared 中级黑马   /  2015-10-12 19:33  /  266 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection
List:元素是有序的,元素可以重复。因为该集合体系有索引。
        ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
        LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
        Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
                Vector有枚举(Enumeration)这种特殊的取出方式。
Iterator中的数据是Object类型,要转换成具体类型,才可以操作具体类型中的属性。
List中的contains和remove方法是调用的元素的equals方法,所以一般要用List判断元素重复性,要复写equals方法。

Set:元素是无序,元素不可以重复。
        HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
        TreeSet:可以对对象进行排序。
Set在存入对象的时候,会调用对象的hashCode和equals方法,如果元素的HashCode值相同,才会判断equals是否为true。
所以,想要存入Set集合的对象,要复写一下hashCode和equals方法,以保证元素唯一性。
同理:判断和删除也是依据hashCode和equals方法。
TreeSet排序的依据是对象的compareTo方法或者是传入比较器的compare方法。
所以,往TreeSet中存对象,要让对象实现comparable或者给TreeSet传入一个比较器。
注意:有比较器又有对象的compareTo方法,优先调用比较器的compare方法。

Map
Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。将Hashtable替代,jdk1.2.效率高。
TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
其实,Set底层就是使用了Map集合。
所以,HashMap的“键”要实现hashCode和equals方法。TreeMap的“键”要实现comparable或者接受一个comparator
map集合的两种取出方式:
1,Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
        所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,
                                而这个关系的数据类型就是:Map.Entry
两个工具类:
Collections
Arrays(数组变集合的方法不可以使用集合的增删方法)

如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。


您需要登录后才可以回帖 登录 | 加入黑马