跳转至

Java Collections Cheat Sheet:深入理解与高效运用

简介

在Java编程中,集合框架(Collections Framework)是一个强大且常用的工具集,用于存储和操作一组对象。Java Collections Cheat Sheet 是对这个框架中各种类和接口的快速参考指南,它可以帮助开发者迅速回忆起关键的方法、特性和使用场景。本文将详细介绍Java Collections Cheat Sheet的相关内容,帮助读者更好地掌握和运用Java集合。

目录

  1. 基础概念
  2. 使用方法
    • List
    • Set
    • Map
  3. 常见实践
    • 遍历集合
    • 添加和删除元素
    • 查找元素
  4. 最佳实践
    • 选择合适的集合类型
    • 性能优化
  5. 小结
  6. 参考资料

基础概念

Java集合框架主要包含三大接口:ListSetMap。 - List:有序的可重复元素集合,允许通过索引访问元素。例如 ArrayListLinkedList 都是 List 接口的实现类。 - Set:无序且唯一的元素集合,不允许重复元素。常见的实现类有 HashSetTreeSet 等。 - Map:键值对(key-value pairs)的集合,一个键最多映射到一个值。HashMapTreeMap 是常用的实现类。

使用方法

List

创建 List

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

public class ListExample {
    public static void main(String[] args) {
        // 创建一个 ArrayList
        List<String> list = new ArrayList<>();
    }
}

添加元素

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

public class ListAddExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add(1, "Cherry"); // 在索引 1 处插入元素
    }
}

获取元素

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

public class ListGetExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        String element = list.get(1); // 获取索引 1 处的元素
        System.out.println(element);
    }
}

Set

创建 Set

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

public class SetExample {
    public static void main(String[] args) {
        // 创建一个 HashSet
        Set<String> set = new HashSet<>();
    }
}

添加元素

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

public class SetAddExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Apple"); // 重复元素不会被添加
    }
}

Map

创建 Map

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

public class MapExample {
    public static void main(String[] args) {
        // 创建一个 HashMap
        Map<String, Integer> map = new HashMap<>();
    }
}

添加键值对

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

public class MapPutExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 20);
    }
}

获取值

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

public class MapGetExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        Integer value = map.get("Apple");
        System.out.println(value);
    }
}

常见实践

遍历集合

遍历 List

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

public class ListTraversalExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");

        // 传统 for 循环
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        // 增强 for 循环
        for (String element : list) {
            System.out.println(element);
        }
    }
}

遍历 Set

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

public class SetTraversalExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");

        // 增强 for 循环
        for (String element : set) {
            System.out.println(element);
        }
    }
}

遍历 Map

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

public class MapTraversalExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 20);

        // 遍历键值对
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // 遍历键
        for (String key : map.keySet()) {
            System.out.println(key);
        }

        // 遍历值
        for (Integer value : map.values()) {
            System.out.println(value);
        }
    }
}

添加和删除元素

List 添加和删除元素

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

public class ListModifyExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");

        list.add(1, "Cherry"); // 在索引 1 处插入元素
        list.remove("Banana"); // 删除指定元素
        list.remove(0); // 删除指定索引处的元素
    }
}

Set 添加和删除元素

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

public class SetModifyExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");

        set.add("Cherry"); // 添加元素
        set.remove("Banana"); // 删除元素
    }
}

Map 添加和删除键值对

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

public class MapModifyExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 20);

        map.put("Cherry", 30); // 添加键值对
        map.remove("Banana"); // 删除指定键的键值对
    }
}

查找元素

在 List 中查找元素

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

public class ListSearchExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");

        int index = list.indexOf("Banana"); // 返回元素的索引
        boolean contains = list.contains("Cherry"); // 判断是否包含指定元素
    }
}

在 Set 中查找元素

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

public class SetSearchExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");

        boolean contains = set.contains("Cherry"); // 判断是否包含指定元素
    }
}

在 Map 中查找元素

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

public class MapSearchExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 20);

        Integer value = map.get("Apple"); // 通过键获取值
        boolean containsKey = map.containsKey("Cherry"); // 判断是否包含指定键
    }
}

最佳实践

选择合适的集合类型

  • 如果需要有序且可重复的元素集合:选择 List,如 ArrayList 适用于频繁的随机访问,LinkedList 适用于频繁的插入和删除操作。
  • 如果需要唯一且无序的元素集合:选择 SetHashSet 性能较好,TreeSet 可以对元素进行排序。
  • 如果需要存储键值对:选择 MapHashMap 性能高,TreeMap 按键排序。

性能优化

  • 避免不必要的装箱和拆箱:使用 ArrayList<Integer> 时,尽量使用 int 基本类型的方法(如果有),以减少性能开销。
  • 预分配合适的容量:对于 ArrayListHashMap,可以在创建时指定初始容量,避免频繁的扩容操作。

小结

Java Collections Cheat Sheet 涵盖了集合框架中各种接口和类的基本使用方法、常见实践以及最佳实践。通过掌握这些内容,开发者可以更加高效地使用集合来解决实际问题,提高代码的质量和性能。

参考资料