Java 集合框架体系简介

为什么要使用集合

存储多个数据可以使用数组,但由于数组在内存中是连续存储的,所以会有一些限制。比如数组在创建时就要指定长度,即可以容纳的元素个数,且指定后无法更改;数组在创建时需要指定元素的类型,并且所有元素都必须是该类型或其子类;添加或删除数组中的元素需要创建一个新数组再进行元素复制,比较麻烦。下面是 Person 数组扩容的示意代码。

// 给 people1 数组末尾添加一个元素
public class PersonArray {
    public static void main(String[] args) {
        Person[] people1 = new Person[1];
        people1[0] = new Person();

        // 创建新数组
        Person[] people2 = new Person[people1.length + 1];
        // 复制 people1 数组的元素到 people2
        for (int i = 0; i < people1.length; i++) {
            people2[i] = people1[i];
        }
        // 添加新元素
        people2[people2.length - 1] = new Person();
    }
}

数组可以通过索引快速访问和操作元素,在许多场景下仍然是非常有用的,但如果需要动态调整大小或保存不同类型的元素,则可以考虑使用集合类来代替数组。集合类还提供了一系列增加、删除、修改和查找元素的方法。集合框架中还提供了多种优化和封装好的实现类,通过使用合适的集合类可以更高效地组织和操作数据。

集合框架体系

Java 的集合类很多,主要有CollectionMap两个接口,层次关系如下图。

Collection接口有ListSet这两个重要的子接口,它们的实现子类都是单列集合。其中List接口表示有序的、可以包含重复元素的集合,常见的实现类有ArrayListLinkedListVectorSet接口表示无序的且不包含重复元素的集合,常见的实现类有HashSetTreeSetLinkedHashSet

Map接口实现子类是双列集合,表示一组键值对的映射,其中每个键都是唯一的。常见的实现类有HashMapHashtableProperties

public class AddElements() {
  public static void main(String[] args) {
    ArrayList<Object> list = new ArrayList<>();
    list.add("黄蓉");
    list.add("郭靖");

    HashMap hashMap = new HashMap();
    hashMap.put("001", "黄蓉");
    hashMap.put("002", "郭靖");
  }
}

热门相关:最强狂兵   梦回大明春   夫人你马甲又掉了   特工重生:快穿全能女神   诱人的旅程