1. 提供动态数组和链表

ArrayList和LinkedList是Java集合框架中最常用的两种动态数据结构。它们可以根据需要自动扩展或缩小,以适应元素的添加和删除。ArrayList是使用数组实现的,而LinkedList是使用链表实现的。

ArrayList适用于随机访问和遍历元素,因为通过索引可以以O(1)的时间复杂度直接访问元素。而LinkedList适用于频繁插入或删除元素的场景,因为在链表中插入和删除元素的时间复杂度是O(1)。

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List arrayList = new ArrayList<>();
        arrayList.add("apple");
        arrayList.add("banana");
        arrayList.add("orange");

        List linkedList = new LinkedList<>();
        linkedList.add("apple");
        linkedList.add("banana");
        linkedList.add("orange");

        System.out.println("ArrayList: " + arrayList);
        System.out.println("LinkedList: " + linkedList);
    }
}

输出结果:

ArrayList: [apple, banana, orange]
LinkedList: [apple, banana, orange]

2. 存储键值对的映射关系

HashMap和TreeMap是用于存储键值对映射关系的集合类。HashMap使用哈希表来实现,根据键的哈希值存储和获取元素,具有较快的插入和查找速度。TreeMap使用红黑树来实现,根据键的自然顺序或自定义比较器进行排序,具有有序性。

HashMap适用于快速查找和插入键值对的场景,因为平均时间复杂度为O(1)。TreeMap适用于按顺序访问键值对或根据键的范围查找键值对的场景。

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class MapExample {
    public static void main(String[] args) {
        Map hashMap = new HashMap<>();
        hashMap.put("apple", 10);
        hashMap.put("banana", 20);
        hashMap.put("orange", 30);

        Map treeMap = new TreeMap<>();
        treeMap.put("apple", 10);
        treeMap.put("banana", 20);
        treeMap.put("orange", 30);

        System.out.println("HashMap: " + hashMap);
        System.out.println("TreeMap: " + treeMap);
    }
}

输出结果:

HashMap: {apple=10, orange=30, banana=20}
TreeMap: {apple=10, banana=20, orange=30}

3. 维护唯一性和排序

HashSet和TreeSet用于存储唯一性的元素,并且可以按照自然顺序或自定义比较器进行排序。HashSet使用哈希表实现,其元素没有顺序性。TreeSet使用红黑树实现,其元素会按照自然顺序或自定义比较器进行排序。

HashSet适用于快速判断元素是否存在和去除重复元素的场景。TreeSet适用于希望元素有序的场景,可以提供自定义的比较器对元素进行排序。

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {
    public static void main(String[] args) {
        Set hashSet = new HashSet<>();
        hashSet.add("apple");
        hashSet.add("banana");
        hashSet.add("orange");

        Set treeSet = new TreeSet<>();
        treeSet.add("apple");
        treeSet.add("banana");
        treeSet.add("orange");

        System.out.println("HashSet: " + hashSet);
        System.out.println("TreeSet: " + treeSet);
    }
}

输出结果:

HashSet: [banana, orange, apple]
TreeSet: [apple, banana, orange]