一篇文章带你理清Java集合框架

集合概述

  我们之前学习过的引用数据类型当中的数组,就可以理解为一种集合,以此作为切入点,我们可以很容易的理解,集合实际上就是一个容器,可以用来容纳其它类型的数据。
  集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的实际上是java对象的内存地址(或者说集合存储的是引用)。

   public static void main(String[] args) {
        List list = new ArrayList();
        //可以直接使用数字100是因为自动装箱的缘故,实际上是一个Integer类型
        list.add(100);
        System.out.println(list.get(0));
    }

注意:

  1. 集合在java中本身是一个容器,是一个对象。
  2. 集合中任何时候存储的都是“引用”。
  3. 在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构当中。
  4. 所有的集合类和集合接口都在JDK当中的 java.util.* 包下,掌握集合这块的内容,最好能将集合的继承结构图背会!!!


  集合的结构继承图如上图所示,其中虚线框表示的内容是接口,实线框表示的内容是实现类,标红的框表示的是开发当中经常使用的实现类,接下来我将逐一说明其中的所有内容,赶紧拿好你的小本本记着啊。
在java中集合分为两大类:
1.单个方式存储元素
超级父接口:java.util.Collection
2.以键值对的方式存储
超级父接口:java.util.Map

各种集合接口和集合类

Iterable & Iterator
  可迭代的,可遍历的,所有集合元素都是可迭代的,可遍历的。Collection接口继承了父接口Iterable,Iterable接口当中有个方法叫做Iterator,子接口调用这个方法就可以拿到用来遍历集合元素的Iterator对象(迭代器对象)。


  List集合存储元素特点:有序可重复,存储的元素有下标。有序实际上说的是存和取的顺序是一样的,并不是说按照元素值的大小排序,有序就是因为List集合都有下标,下标从0开始。

List的实现类:

  1. ArrayList集合:底层采用了数组这种数据结构(非线程安全)。
  2. LinkedList集合:底层采用了双向链表数据结构。
  3. Vector集合:底层采用了数组这种数据结构(线程安全),所有的方法都有synchronized关键字修饰,所以线程安全。现在保证线程安全有别的方案,所以Vector很少使用了。

  Set集合存储元素特点:无序不可重复。无序表示进去是这个顺序,取出来就不一定是这个顺序了,另外Set集合中元素没有下标。

Set集合的实现类:

  1. HashSet集合:底层实际上new了一个HashMap集合,向HashSet集合中存储元素,实际上是存储到HashMap集合中了。
  2. TreeSet集合:底层实际上new了一个TreeMap集合,向TreeSet集合中存储元素,实际上是存储到TreeMap集合中了。

SortedSet接口
  SortedSet是实现类TreeSet的父接口,由于继承了Set接口,所以它的特点也是无序不可重复,但是放在SortedSet接口当中的元素可以自动排序,我们称之为可排序的集合。


  Map集合跟Collection集合没有关系;以key和value这样的键值对的方式存储元素;key和value都是存储的是java对象的内存地址;所有Map集合的key值特点是无序不可重复的(这点跟Set集合特点是一样的)。

Map集合的实现类:

  1. HashMap集合:底层是哈希表数据结构,非线程安全的。
  2. Hashtable集合:底层也是哈希表数据结构,线程安全的。其中所有的方法都有synchronized关键字修饰,所以线程安全。现在保证线程安全有别的方案,所以HashTable很少使用了。
  3. TreeMap集合:底层的数据结构是一个二叉树。

SortedMap接口
  SortedMap是实现类TreeMap的父接口,由于继承了Map接口,所以它的特点也是无序不可重复,但是放在SortedMap接口当中的元素可以自动排序,我们称之为可排序的集合。
Properties实现类
  Properties被称为属性类。因为Properties是继承于Hashtable,所以它也是线程安全的,另外Properties存储元素也是以key和value的形式存储,并且key和value只支持String类型,不支持其它类型。
Tips:
  怎么将一个线程不安全的ArrayList集合转换成线程安全的呢?
使用集合工具类:
java.util.collections
看清楚哈,这里不是前面学习的集合接口Collection。


以上内容均为个人学习的一点心得,其中的知识点若有错误请留言提醒,若有侵权内容提醒马上删除。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值