JavaSE 集合

目录

  • 集合是什么?有什么用?
  • 集合怎么用?
  • 1、集合的组成(常用部分)
  • 2、Iterable 接口和 Iterator 接口
  • 3、Collection 接口
  • 4、Collections 类
  • 5、不同集合的使用场景

集合是什么?有什么用?

Java 集合是用于存放数据的容器/工具。可以存放数量不确定的数据(与数组相比)。可以实现常用的数据结构,比如:线性表、链表、栈、队列、树等。

注意1:集合里只能保存对象,实际上是保存对象的引用变量。所以将对象添加到集合中后,如果对对象进行修改,集合中保存的该对象也会同步修改。

返回目录

集合怎么用?

1、集合的组成(常用部分)

(1)Java 集合常用的部分为:List 集合、Set 集合、Queue 集合、Map 集合。

List 集合是有序、元素可重复的集合,实现了线性表、链表等数据结构;

Set 集合是无序、元素不可重复的集合;

Queue 集合实现了队列(双端队列)、栈等数据结构。

Map 集合中的某一个元素,由具有映射关系的两个数据组成。

(2)其中 List、Set、Queue 都是 Collection 接口的子接口。

Collection 接口继承了 Iterable 接口,表示该接口可以通过迭代器进行遍历。

(3)还有一个工具类 Collections,封装了一些可以操作集合的静态方法。

SEQUENCE解析 Java java sequence作用_迭代器

SEQUENCE解析 Java java sequence作用_List_02

SEQUENCE解析 Java java sequence作用_List_03

2、Iterable 接口和 Iterator 接口

Collection 接口实现了Iterable 接口,Iterable 接口的功能有2个:

(1)实现该接口的类,可以使用迭代器进行遍历;

(2)实现该接口的类,可以使用 foreach 循环进行遍历。

public interface Iterable<T> {
    // 返回一个迭代器对象
    Iterator<T> iterator();
}
public static void main(String[] args) {
    Collection<String> col = new ArrayList<>();
    col.add("a");
    col.add("b");
    col.add("c");

    //迭代器遍历
    Iterator<String> it = col.iterator();
    while (it.hasNext()) {
        String s = it.next();
        System.out.println(s);
    }

    // foreach 遍历
    for (String s : col) {
        System.out.println(s);
    }
}

Iterator 接口(迭代器)常用的3个方法。

public interface Iterator<E> {
    boolean hasNext();
    E next();
    default void remove() {...}
}

3、Collection 接口

Collection 接口是 List、Set、Queue 接口的父接口,定义了一些对集合的操作。

public interface Collection<E> extends Iterable<E> {

    // 增:向集合中添加元素
    boolean add(E e);
    boolean addAll(Collection<? extends E> c);
    
    // 删:从集合中删除指定的元素
    boolean remove(Object o);
    boolean removeAll(Collection<?> c);
    void clear();
    // 从当前集合中,删除集合c不包含的元素。相当于留下当前集合和集合c的交集。
    boolean retainAll(Collection<?> c);
    
    // 查:判断集合是否包含指定的元素
    boolean contains(Object o);
    boolean containsAll(Collection<?> c);

    // 返回集合中元素的数量
    int size();

    // 判断集合是否为空
    boolean isEmpty();
}


4、Collections 类

Collections 类是一个工具类,用于操作集合。以下是常用方法(静态方法)。

public class Collections {
    
    // 1、排序操作
    // 按照元素的自然顺序,进行升序排序
    // 自然顺序:Comparable 接口的 compareTo() 方法。详见《JavaSE 比较器接口》
    public static void sort(List list) {...}
    // 按照指定顺序,进行排序
    public static void sort(List list, Comparator c) {...}
    // 反转集合顺序
    public static void reverse(List list) {...}
    // 随机排序(洗牌)
    public static void shuffle(List list) {...}
    // 交换元素顺序
    public static void swap(List list, int i, int j) {...}

    // 2、查找、替换
    // 二分查找。使用该方法,必须保证 List 集合有序。
    public static int binarySearch(List list, T key) {...}
    // 查找最小元素
    public static T min(Collection<? extends T> coll) {...}
    public static T min(Collection coll, Comparator comp) {...}
    // 查找最大元素
    public static T max(Collectio coll) {...}
    public static T max(Collectio coll, Comparato comp) {...}
    // 用新值替换集合中的所有旧值
    public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) {...}
    // 返回指定元素的出现次数。
    public static int frequency(Collection c, Object o) {...}
    // 使用指定元素,替换集合中的所有元素。
    public static void fill(List list, T obj) {...}
    
    // 3、同步控制
    // 返回线程安全的集合对象
    public static Collection synchronizedCollection(Collection c) {...}
    public static List synchronizedList(List list) {...}
    public static Set synchronizedSet(Set s) {...}
    public static Map synchronizedMap(Map m) {...}
}

5、不同集合的使用场景

List:有序、元素可重复的集合

Set:无序、元素不可重复的集合

Map:具有映射关系的集合

Queue:队列