Java-集合

1.集合概述

  1. 集合主要为了保存数量不确定的数组以及具有映射关系的数据(关联数组)。
  2. 集合类主要为了保存、盛装其他数据,因此也被称为容器类。位于Java.util包下。
  3. 集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。
  4. Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。

Collection接口基本结构(黄色为接口,蓝色为实现类)
Java-集合

Map接口基本结构
Java-集合

集合接口及其作用:
Java-集合

集合实现类及其作用:
Java-集合

2.Collection接口

  1. Collection是List、Set和Queue的父接口,通常情况下不被直接使用。
  2. Collection接口定义了一些通用的方法,可以实现对集合的基本操作(Set,List和Queue)

Collection接口常用方法如下:
Java-集合

3.List集合(ArrayList与LinkedList)

  1. List为有序可重复集合,集合中每个元素都有其对应的顺序索引。
  2. List集合默认按元素添加顺序设置元素的索引(第一个为0,第二个为1...)
  3. List实现Collection接口,主要有两个常用实现类:ArrayList与LinkedList

1-ArrayList类

ArrayList类实现了可变数组的大小,此外还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好
向ArrayList中插入删除元素速度较慢。

构造方式

  1. ArrayList():构造一个初始容量为 10 的空列表。
  2. ArrayList(Collection<?extends E>c):构造一个包含指定 Collection 元素的列表,这些元素是按照该 Collection 的迭代器返回它们的顺序排列的。

常用方法

除Collection接口方法外还包括:
Java-集合

2-LinkedList类

LinkedList类采用链表接口保存对象,便于向集合中插入或者删除元素。插入删除元素效率高,但随机访问元素速度较慢(特定索引)。

构造方式同ArrayList,有两种

常用方法:

Java-集合

3-ArrayList与LinkedList区别

相同:

ArrayList与LinkedList都是List接口的实现类,都实现了List的所有未实现的方法

不同:

  1. ArrayList基于动态数组数据结构的实现,访问速度优于LinkedList
  2. LinkedList基于链表数据结构的实现,占用内存空间较大,但在批量插入删除时优于ArrayList

4.Set集合(HashSet与TreeSet)

set实现collection接口,Set集合中的对象不按特定顺序排序且不能包含重复对象(只能有一个null)

1-HashSet

特点:

  1. HashSet按照HashSet算法存储集合中的元素,有很好的存取查找性能。
  2. 不能保证元素的排列顺序
  3. HashSet非同步,若多个线程需同时访问或修改一个HashSet需通过代码保证其同步。
  4. 集合元素值可以为null(只能有一个)

存取流程:

向HashSet集合存入一个元素时,HashSet会调用该对象的hashCode()方法来取得到该对象的hashCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置。
若有两个元素通过equals()方法比较返回的结果为true,但它们的hashCode不相等,HashSet会将他们存储于不同位置,依然可以添加成功。(Set中存的是引用而非值)

构造方法:

  1. HashSet():构造一个新的空的 Set 集合。
  2. HashSet(Collection<? extends E>c):构造一个包含指定 Collection 集合元素的新 Set 集合。其中,“< >”中的 extends 表示 HashSet 的父类,即指明该 Set 集合中存放的集合元素类型。c 表示其中的元素将被存放在此 Set 集合中。

2-TreeSet

TreeSet同时实现了Set与SortSet接口(SortSet为Set的子接口,可以实现对集合进行自然排序),因此使用TreeSet类实现Set接口默认情况下是自然排序的(升序)。
2) TreeSet只能对实现了Comparable接口的类进行排序(Comparable接口有一个compareTo(Object o)方法用于比较两个对象的大小)。

实现了Comparable接口的类如下:

Java-集合

TreeSet的常用方法:

Java-集合

Java-集合

上一篇:基本数据类型


下一篇:C语言_输出规定符