【Java集合】集合框架初识

文章目录

  • 前言
  • 一、集合是什么?
  • 二、集合框架图
  • 三、迭代器
  • 总结


前言

在java.util包中提供了一套性能优良,使用方便的Java集合框架。Java集合的出现是为了弥补数组的不足,因为数组中不能让存放对象,且数组的长度是固定的,不能动态扩容。集合比数组显得更加的灵活实用。

一、集合是什么?

  • 集合是用来存放对象的一种容器,准确的说存放的是对象的引用,对象依旧存储在堆中。
  • 集合中存放基本数据类型时会进行自动装箱为引用类型。
  • 集合的容量支持动态变化。

二、集合框架图

【Java集合】集合框架初识_第1张图片
从上面的集合可以看出Java集合框架主要包含两种类型的容器,一个是Collection,一个是Map。
Collection主要是三个子接口:List,Set,Queue
List:元素按进入先后有序保存,可重复。
Set:仅接收一次,不可重复,并做内部排序。

  • List接口被AbstractList实现,AbstractList有三个子类:ArrayList,LinkedList,Vector

    • ArrayLIst:是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。支持随机访问,线程不安全。
    • LinkedList:是一个双向链表实现,不会按照线性的顺序存储,与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。
    • Vetor:与ArrayList数组实现类似,但其方法上使用了synchronized关键字,线程安全,他还有一个实现类stack。
  • Set接口被AbstractSet实现,AbstractSet有两个实现类:HashSet,TreeSet

    • HashSet:其底层其实是包装了一个HashMap去实现的。HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能。
    • TreeSet:实现了SortedSet接口,顾名思义这是一种排序的Set集合,底层是用TreeMap实现的,本质上是一个红黑树原理。

Map主要是两个子接口:HashMap,TreeMap

  • HashMap:是一个散列表,它存储的内容是键值对(key-value)映射。实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。 是无序的,即不会记录插入的顺序。
  • TreeMap:实现了SortMap接口,使用红黑树对所有的key进行排序。

三、迭代器

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法。
【Java集合】集合框架初识_第2张图片
如上图所示,Iterator的核心方法next(),hasNext(),remove()。

  • next方法会返回迭代器的下一个元素,并且更新迭代器的状态。
  • hasNext用于检测集合中是否还有元素。
  • remove将迭代器返回的元素删除。
// 示例
import java.util.ArrayList;
import java.util.Iterator;

public class Test {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> list= new ArrayList<String>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");

        // 获取迭代器
        Iterator<String> it = list.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());  //A

		//循环打印
		while(it.hasNext()) {
			String item=it.next();
			if("A".equals(item)){
				it.remove();//删除A
			}
    		System.out.println(it.next());
		}
    }
}

Collections和Arrays中包含了一系列的静态方法来操作集合,比如排序,遍历等。
【Java集合】集合框架初识_第3张图片
【Java集合】集合框架初识_第4张图片

总结

Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。

集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。

集合框架的类和接口均在java.util包中。

任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。

你可能感兴趣的:(java,开发语言,后端)