java集合(每日学习) Fighting!!!

Collection接口: 

  1.父接口iterable 有两个子接口list,set,Map不是collection的子接口

  2.collection中存储的数据是无序的,可以同时存储多个null.

Collections接口:

   1.是一个集合框架帮助类,里面包含一些对集合的排序,搜索,及序列化的操作。


Set接口:

   特点:没有提供额外的方法,存储的数据是无序且不可重复

   HashSet:1.允许存放Null值,但是在HashSet只能存放1个

                    2.如果向HashSet中添加已经存在的元素,将不会被放入hashmap中,原元素也不会改变->不可重复

                    3.HashSet中元素是无序的,存储位置是固定的,由hashcode决定。

                    遍历方式:for( object s: list)

                                        list.toArray(array_name)->遍历array_name数组

                                        Iterator<object>  it =list.iterator()   

List接口:

    特点:有序且可重复的

    LinkedList:双向链表结构;不是线程安全的;插入,删除方便,但是随即访问速度很慢;数据随即的存储在内存空间中。

    ArrayList:类似数组方式存储;不是线程安全的;不适合在中间频繁插入,删除,随即访问速度很快;数据密集的存储在内存空间中。

 PS:1.arrayList不是线程安全的,多线程可以使用vector,大部分方法有synchronized进行修饰

           2.vector效率不能和arrayList相比。

           3.扩容:arraylist初始时,没有指定长度,默认是10;如果超过了原始容量,arraylist会扩容到原来的1.5倍

                           vector容量增量初始没有指定增量,是原来的2倍。

 详细信息可看:http://blog.csdn.net/tayanxunhua/article/details/10037403

Map接口:不能有重复的key值出现

    HashMap: 实现抽象类:abstractMap,继承接口:Serializable,Cloneable,Map

                       1.不保证映射的顺序,允许使用null值和null键

                        2.hashmap是一个数组链表结构,内部有一个entry类,用于链表的存储

    HashMap put(K,V)原理:首先通过hashcode找到数组中的index(存入位置),然后和那个链表中的entry 用equals去比较,判断K是否存在。

                                                  如果已经存在,就用新V去替换旧V,如果不存在将entry加入链表中。

                                                  hashcode性质:如果hashcode不同 equals一定不同,如果hashcode相同,equals可能不同。

    详情可看:http://blog.csdn.net/ghsau/article/details/16843543    


PS:1.HashMap不是线程安全的,而HashTable是线程安全的,但是HashTable效率很差。

         2.一般多线程下使用HashMap 可以外面封装一层,实现同步

              如Map map=Collections.synchronizedMap(new HashMap())




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值