java基础--04--集合框架--01--总述

一、集合引入

数组、集合都用于对多个对象进行存储,数组特点及缺点如下1.1、1.2,故引入集合

1.1 数组特点

  1. 长度确定
  2. 类型确定
  3. 有序、可重复

1.2 数组缺点

  1. 长度不可修改
  2. 删除、插入等操作效率不高
  3. 无序、不重复的无法满足

数组与集合的区别如下:

  1. 数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。
  2. 数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象(基本数据类型存在集合中须转为包装类)。

二、集合框架

Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue,因此Java集合大致也可分成List、Set、Queue、Map四种接口体系(注意:Map不是Collection的子接口

其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合;Map代表的是存储key-value对的集合,可根据元素的key来访问value。

三、List--单列集合--有序可重复--按索引值顺序存储(动态数组)

  • Vector:底层结构为Object[],线程安全(各方法添加synchronized关键字)
  • ArrayList:底层结构为Object[],插入、删除数据须移动数据
  • LinkedList:底层结构为双向链表,插入、删除数据无须移动数据,效率比Arraylist高

                                                                                                                                  图3.1 双向链表结构图

   //ArrayList存数据源码
    public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;
    }

四、Set--单列集合--无序不可重复--按hashcode值顺序存储(输出顺序永远相同)

  • HashSet:底层结构为Map,须重写hashcode和equals方法
  • TreeSet:底层结构为Map,可以按对象指定属性进行排序(自然排序、定制排序)

五、Map--key无序、不可重复--key所在的类要重写hashcode和equals方法

HashTable:古老实现类,线程安全,不可存null值

          --properties:常用于处理配置文件

Hashmap:底层结构为数组+链表+红黑树(jdk1.7及之前是数组+链表),可存null值

            --LinkedHashMap:频繁遍历时,效率高于HashMap

TreeMap:底层结构为红黑树,保证按照添加的key进行排序,实现排序遍历

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值