java集合框架(一)总览

集合概念:
Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象
作用:
1、在类的内部,对数据进行组织;
2、简单而快速的搜索大数量的条目;
3、有的集合接口,提供了一系列有序的元素,并且可以在序列中间快速的进行插入或者删除元素;
4、有的集合接口,提供了映射关系,可以通过关键字(key)快速查找到对应的唯一对象,而这个关键字可以是任意类型
集合框架示意图:
这里写图片描述

Collection 接口:
1、是List、Queue、Set接口的父0接口:

2、定义了可用于操作List、Set和Queue的方法—–增删改查

List接口及实现类—-ArrayList
List:元素有序,并且可重复;
List可精确控制元素的插入位置,或者删除指定位置的元素;
ArrayList—数组序列,是List的重要实现类,它的底层是由数组实现的;

泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。
泛型集合中的限定类型,不能使用基本类型,必须用基本类型的包装类。
这里写图片描述

Set接口及其实现类—-HashSet
Set:元素无序,并且不可重复
HashSet哈希集,是Set的重要实现类;

Map接口
Map提供了一种映射关系,元素是以键值对的形式存储(key-value)
根据key快速查找value
Map中的键值对以Entry类型的对象实例形式存在;
key值不能重复,value值可以重复;
key对value是多(一)对一的关系;
Map接口提供了返回key值集合、value值集合、Entry值集合,的方法;
Map支持泛型,形式如:Map <k,v>

HashMap类
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
HashMap中的Entry对象是无序排列的;
Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复);

Collection
|—–List 有序(存储顺序和取出顺序一致),可重复

    |----ArrayList ,线程不安全,底层使用数组实现,查询快,增删慢。效率高。
            每次容量不足时,自增长度的一半,如下源码可知
              int newCapacity = oldCapacity + (oldCapacity >> 1);
    |----LinkedList , 线程不安全,底层使用链表实现,查询慢,增删快。效率高

    |----Vector , 线程安全,底层使用数组实现,查询快,增删慢。效率低
            每次容量不足时,默认自增长度的一倍(如果不指定增量的话),如下源码可知
               int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                 capacityIncrement : oldCapacity);
|-----Set   元素唯一
一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。

    |--HashSet 底层是由HashMap实现的,通过对象的hashCode方法与equals方法来保证插入元素的唯一性,无序(存储顺序和取出顺序不一致),。

        |--LinkedHashSet 底层数据结构由哈希表和链表组成。哈希表保证元素的唯一性,链表保证元素有序。(存储和取出是一致)

    |--TreeSet 基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行

集合与数组的区别:
1:长度限制之别
- 数组长度是固定不变的
- 集合的大小是可变的
2:可以存储的类型之别
- 一个数组存储的元素可以是基本类型,也可以是引用类型,且只能存储同一种类型的元素
- 一个集合存储的元素只能是引用类型,但集合可以存储不同类型的元素(但集合一般存储同一种类型)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值