Java学习(82)Java集合——集合概述、集合框架的体系结构

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Java集合——集合概述、集合框架的体系结构

集合概述

  1. 概述
    生活中的集合人或事物聚集在一起。
    数学中的集合具有某种特性的事物的整体。
    Java中的集合Java中的集合是工具类可以存储任意数量的具有共同属性的对象。
  2. 集合的应用场景
    (1) 无法预测存储数据的数量
    (2) 同时存储具有一对一关系的数据
    (3) 需要进行数据的增删
    (4) 数据重复问题

集合框架的体系结构

(1) Collection类的对象例如存储学生的信息那就把学生的类的对象存放在集合中。
Collection下有三个子接口每个接口下面又有自己的实现类。
a. List序列要求存放的数据时有序的且是允许重复的。常用的实现类为ArrayList可以看成是一个长度动态生长的数组。
b. Queue队列要求存放的数据时有序的且是允许重复的常用的实现类为LinkedList这个实现类同时也实现了List接口表示的是链表的内容。
c. Set集存放的数据时无序的且是不允许重复的
(2) Map键值对例如存储购物车商品信息键就是商品的编号值就是商品的信息。常用的实现类为HashSet也就是哈希集。
Map主要的实现类为HashMap即哈希表存储以键值对形式表示的数据。

集合和数组的区别

(1) 区别

  1. 数组的长度是固定的集合的长度可以动态扩展。
  2. 数组只能存储相同数据类型的数据而集合可以存储不同数据类型的数据。比如将arr数组中的数据3改为3.0变为double类型就会报错。而list中可以存储字符串和Integer类型的对象。
int[] arr = {1,2,3};
List list = new ArrayList();
list.add(new String(“hello”));
list.add(new Integer(10));

后面会学习到泛型的使用如果为集合加上泛型也就限制了集合中只能存储这一种类型的数据。如下面<>中定义了泛型类型为String再去添加Integer类型数据时就会报错了。

List<String> list = new ArrayList<>();
list.add(new String(“hello”));
list.add(new Integer(10)); // 报错
  1. 数组可以存储基本数据类型数据也可以是引用类型而集合只能是引用类型。这里需要说明一下。如下代码所示1和基本数据类型变量n都可以被添加到集合中并没有报错。注意这并不是因为集合中能存储基本数据类型而是经过装箱操作将基本数据类型转换为对应的包装器类对象了。
List list = new ArrayList();
list.add(1);
int n = 10;
list.add(n);

(2) 应用场景

  1. 数组适用于数据长度固定的情况并且主要进行查询操作。
  2. 集合的应用场景如下
    a. 无法预测存储数据的数量
    b. 同时存储具有一对一关系的数据
    c. 需要进行数据的增删
    d. 需要解决数据重复问题可以直接使用集合Set完成。

集合中接口和类的特点总结

1. Collection

Collection主要用于存储类的对象。
Collection下有三个子接口分别是List、Queue和SetList和Queue中可以存储有序且重复的数据Set中存储的数据是无需且不允许重复。
(1) List接口的主要实现类包括ArrayList和LinkedListLinkedList同时实现了Queue接口。
ArrayList的底层实现是数组因此在内存中是连续存储的。查询速度快但增加和删除速度慢
LinkedList底层是基于双向链表的增加和删除速度快查询速度慢。
(2) Set接口的主要实现类有HashSet和TreeSet
HashSet是基于哈希表实现的数据是无序的HashSet元素可以是null但只能有一个null
TreeSet是基于二叉树实现的可以实现数据的自动排序确保集合元素处于排序状态不允许放入空值
HashSet的性能由于TreeSet一般情况下建议使用HashSet如果需要使用排序功能建议使用TreeSet。

2. Map

Map主要用于存储键值对的数据。
Map的主要实现类包括HashMap和TreeMap其中HashMap基于哈希表实现TreeMap基于红黑树实现。
HashMap适用于在Map中插入、删除和定位元素
TreeMap适用于按自然顺序或自定义顺序对键值进行遍历
HashMap比TreeMap性能好所以HashMap使用更多一些如果需要对数据进行排序可以使用TreeMap。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java