Java集合入门

一、集合概述

         Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。数组就是一个集合,集合实际上就是一个容器,可以容纳其他类型的数据。在实际开发当中,从数据库查询出的所有的对象,封装成对于的Java对象,放入到对于类型的集合里面。

特点:

  1. 容器(变量、数组(储原始类型数据)):可以存储多个数据,必须存对象。
  2. 集合的空间大小是动态分配的:根据集合中存储的元素的增多或者减少自动调整空间大小。
  3. 集合不能直接存储基本数据类型,另外集合也不能直接存储Java对象,集合存储的都是Java对象的内存地址(或者说集合存储的是引用)
  4. 在Java中,每一个Java集合对于不同的数据结构,往不同的集合中存储元素,相当于往不同的数据结构存储元素。
  5. 所以的集合类与集合接口都在Java.util.*;包下。
  6. 与数组区别:     

数组

集合

长度

固定

可变

存储元素

基本类型/引用类型

引用类型

元素类型的一致性

必须一致

可以不一致

 

二、集合体系

       集合作为一个容器,可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。

三、Java Collections Framework 

容器,就是可以容纳其他Java对象的对象。Java Collections Framework(JCF)为Java开发者提供了通用的容器,其始于JDK 1.2,优点是:

  • 降低编程难度
  • 提高程序性能
  • 提高API间的互操作性
  • 降低学习难度
  • 降低设计和实现相关API的难度
  • 增加程序的重用性

Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。很多时候拆包装和解包装能够自动完成。这虽然会导致额外的性能和空间开销,但简化了设计和编程。

Java集合的继承结构图

  • ArrayList

(1)ArrayList集合底层采用了数组这种数据结构。

(2)ArrayList集合是非线程安全的。

(3)ArrayList集合适合查询,不适合频繁的增删改。

  • LinkedList

(1)LinkedList集合采用了双向链表数据结构。

(2)LinkedList集合适合增删改,不适合查询。

  • Vector

(1)Vector集合底层采用了数组这种数据结构。
(2)Vector集合是线程安全的。
(3)Vector所有的方法都有synchronized关键字修饰,所以线程安全,但是效率较低,现在保证线程安全有别的方案,所以Vector使用的较少了。

  • Set

(1)Set集合存储元素特点:无序不可重复,无序表示存进去是这个顺序,取出来就不一定是这个顺序了。
(2)Set集合中元素没有下标,Set集合中的元素还不能重复。
(3)实际上HashSet集合在new的时候,底层实际上new了一个HashMap集合。向HashSet集合中存储元素,实际上是存储到HashMap集合中了。

HashMap集合是一个哈希表数据结构。

TreeSet集合底层实际上是TreeMap。new TreeSet集合的时候,底层实际上new了一个TreeMap集合。
往TreeSet集合中放数据的时候,实际上是将数据放到TreeMap集合中了。
TreeMap集合底层采用了二叉树数据结构。
补充:SortedSet集合存储元素的特点:
由于继承了Set集合,所以它的特点也是无序不可重复,但是放在SortedSet集合中的元素可以自动排序。我们称为可排序集合。放到该集合中的元素是自动按照大小顺序排序的。

Map集合继承结构图

总结:

ArrayList底层是数组
LinkedList底层是双向链表
Vector底层是数组,线程安全的,效率较低,使用较少
HashSet底层是HashMap,放到HashSet集合中的元素等同于放到HashMap集合key部分了
TreeSet底层是TreeMap,放到TreeSet集合中的元素等同于放到TreeMap集合key部分了
HashMap底层是哈希表
Hashtable底层也是哈希表,只不过线程安全的,效率较低,使用较少
Properties是线程安全的,并且key和value只能存储字符串String
TreeMap底层是二叉树。TreeMap集合的key可以自动按照大小顺序排序

存储元素的特点:

List集合

Set(Map)集合存SortedSet(SortedMap)集合
有序可重复无序不可重复首先是无序不可重复的,但是SortedSet集合中的元素是可排序的
有序:存进去的顺序和取出的顺序相同,每一个元素都有下标无序:存进去的顺序和取出的顺序不一定相同。另外Set集合中元素没有下标无序:存进去的顺序和取出的顺序不一定相同。另外Set集合中元素没有下标
可重复:存进去1,还可以再存储一个1不可重复:存进去1,就不能再存储1了不可重复:存进去1,就不能再存储1了。可排序:可以按照大小顺序排列

Map集合的key,就是一个Set集合。
在Set集合中放数据,实际上放到了Map集合的key部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值