Java中集合的基础知识

119 阅读3分钟

集合

Java中的集合是用来存储一组对象的容器,可以动态增加或缩小容器的大小,适用于存储数据量不确定的情况。集合框架包括两个基本接口:Collection和Map。

Collection接口是存储一个元素集合的根接口,常用的实现类包括ArrayList、LinkedList、HashSet等。它提供了添加、删除、遍历等基本操作,同时也提供了一些集合操作方法,例如交集、并集等。

Map接口是存储键值对映射关系的容器,常用的实现类包括HashMap、TreeMap等。它提供了通过键值对访问元素的方法,同时也提供了一些与键值对有关的操作方法,例如查找、添加、删除等。

集合的优缺点

优点:

  1. 集合框架提供了许多实现,包括数组、链表、哈希表、红黑树等数据结构,能够满足不同的应用需求。
  2. 集合框架提供了丰富的API,可以方便地操作集合中的元素,如增删改查、遍历、排序、比较等等。
  3. 集合框架提供了迭代器,可以遍历集合中的元素,支持快速、安全地对集合进行操作。
  4. 集合框架提供了高效的查找和删除算法,能够快速定位和删除集合中的元素。
  5. 集合框架提供了线程安全的集合实现,可以在多线程环境下使用。

缺点:

  1. 集合框架中的操作可能会影响性能,比如集合的遍历、查找等操作可能会增加CPU和内存的开销。
  2. 集合框架中的某些实现并不是线程安全的,需要在多线程环境下进行同步控制。
  3. 集合框架中的元素只能存储对象,不能存储基本数据类型,需要使用包装类进行转换,增加了额外的开销。
  4. 集合框架的底层实现可能会影响到集合的性能,比如ArrayList的扩容机制可能会导致性能下降。
  5. 集合框架中的实现可能会存在一些隐含的问题,比如使用LinkedList的时候需要注意头尾指针的处理,否则可能会导致内存泄漏等问题。

代码示例

import java.util.ArrayList;
import java.util.Iterator;

public class CollectionDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        Iterator<String> it = list.iterator();
        while(it.hasNext()) {
            String fruit = it.next();
            System.out.println(fruit);
        }
    }
}

集合框架各个类的关系

在集合这个框架中,各个接口和类的关系如下:

  1. Collection接口:是所有集合类的父接口,它定义了一些基本的操作方法,例如add()、remove()、size()等等。
  2. List接口:继承了Collection接口,表示有序的集合,其中的元素可以重复。
  3. Set接口:继承了Collection接口,表示没有重复元素的集合。
  4. SortedSet接口:继承了Set接口,用于表示有序的集合。
  5. Queue接口:继承了Collection接口,表示一种先进先出(FIFO)的数据结构。
  6. Map接口:用于表示键值对集合。
  7. SortedMap接口:继承了Map接口,用于表示有序的键值对集合。
  8. ArrayList类:实现了List接口,是一个有序的集合,可以根据索引进行访问。
  9. LinkedList类:实现了List接口和Queue接口,是一个有序的集合,可以进行快速的插入和删除操作。
  10. HashSet类:实现了Set接口,使用哈希表存储元素,具有快速的查找速度。
  11. TreeSet类:实现了SortedSet接口,使用红黑树存储元素,具有自动排序的功能。
  12. PriorityQueue类:实现了Queue接口,用于表示一种优先级队列。
  13. HashMap类:实现了Map接口,使用哈希表存储键值对。
  14. TreeMap类:实现了SortedMap接口,使用红黑树存储键值对,具有自动排序的功能。