Java集合框架中的List、Map、Set详解

在Java开发中,集合框架是处理数据时不可或缺的工具之一。今天,我们来深入了解一下Java集合框架中的**ListMapSet**,并探讨它们的常见方法操作。

目录

一、List集合

[1.1 List集合介绍](#1.1 List集合介绍)

[1.2 List集合的常见方法](#1.2 List集合的常见方法)

添加元素

获取元素

修改元素

删除元素

元素排序

[1.3 List的不同实现类](#1.3 List的不同实现类)

二、Map集合

[2.1 Map集合介绍](#2.1 Map集合介绍)

[2.2 Map集合的常见方法](#2.2 Map集合的常见方法)

添加键值对

获取值

检查键或值是否存在

删除键值对

[2.3 Map的不同实现类](#2.3 Map的不同实现类)

三、Set集合

[3.1 Set集合介绍](#3.1 Set集合介绍)

[3.2 Set集合的常见方法](#3.2 Set集合的常见方法)

添加元素

检查元素是否存在

移除元素

[3.3 Set的不同实现类](#3.3 Set的不同实现类)

总结


一、List集合

1.1 List集合介绍

List是Java集合框架中的一个接口,它是一个有序的集合,允许存储重复的元素。List中的元素可以通过索引进行访问,这使得它在需要频繁访问元素的场景中非常有用。常见的List实现类有ArrayListLinkedList

1.2 List集合的常见方法

添加元素
  • add(E e):将指定元素添加到列表末尾。

  • add(int index, E element):在指定位置插入元素。

java 复制代码
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(0, "Banana"); // 在索引0处插入
        System.out.println("List: " + list);
    }
}
获取元素
  • get(int index):返回列表中指定位置的元素。

  • indexOf(Object o):返回首次出现的指定元素的索引;如果未找到,则返回-1。

  • lastIndexOf(Object o):返回最后一次出现的指定元素的索引;如果未找到,则返回-1。

java 复制代码
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");
        list.add("Orange");

        String fruit = list.get(1); // 获取索引1处的元素
        System.out.println("Element at index 1: " + fruit);

        int index = list.indexOf("Orange"); // 查找"Orange"的索引
        System.out.println("Index of 'Orange': " + index);

        int lastIndex = list.lastIndexOf("Banana"); // 查找最后一个"Banana"的索引
        System.out.println("Last index of 'Banana': " + lastIndex);
    }
}
修改元素
  • set(int index, E element):用指定元素替换列表中指定位置的元素,并返回被替换的元素。
java 复制代码
import java.util.ArrayList;
import java.util.List;

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

        String oldFruit = list.set(1, "Grape"); // 修改索引1处的元素
        System.out.println("Replaced element: " + oldFruit);
        System.out.println("Updated list: " + list);
    }
}
删除元素
  • remove(int index):删除指定位置的元素。

  • remove(Object o):删除首次出现的指定元素。

java 复制代码
import java.util.ArrayList;
import java.util.List;

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

        list.remove(1); // 删除索引1处的元素
        list.remove("Orange"); // 删除"Orange"
        System.out.println("Updated list: " + list);
    }
}
元素排序

从Java 8开始,List接口提供了sort()方法,可以直接对列表进行排序。

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListSortMethodExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(3);
        list.add(1);
        list.add(4);
        list.add(2);

        list.sort((o1, o2) -> o1.compareTo(o2)); // 升序排序
        System.out.println("Sorted list: " + list);
    }
}

1.3 List的不同实现类

实现类 特点
ArrayList 基于动态数组实现,支持快速随机访问,适合频繁读取操作,但插入和删除效率较低
LinkedList 基于双向链表实现,适合频繁插入和删除操作,但随机访问效率较低

二、Map集合

2.1 Map集合介绍

Map是Java集合框架中的一个接口,用于存储键值对(key-value)形式的数据。在Map中,键(key)必须是唯一的,而值(value)可以重复。常见的Map实现类有HashMapTreeMapHashTable

2.2 Map集合的常见方法

添加键值对
  • put(K key, V value):向Map中添加键值对。
java 复制代码
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", 1);
        map.put("Banana", 2);
        System.out.println("Map: " + map);
    }
}
获取值
  • get(Object key):根据键获取对应的值。
java 复制代码
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", 1);
        map.put("Banana", 2);

        Integer value = map.get("Apple"); // 获取键为"Apple"的值
        System.out.println("Value for 'Apple': " + value);
    }
}
检查键或值是否存在
  • containsKey(Object key):判断Map中是否包含指定的键。

  • containsValue(Object value):判断Map中是否包含指定的值。

java 复制代码
import java.util.HashMap;
import java.util.Map;

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

        boolean hasKey = map.containsKey("Apple"); // 检查键"Apple"
        boolean hasValue = map.containsValue(2); // 检查值2
        System.out.println("Contains key 'Apple': " + hasKey);
        System.out.println("Contains value 2: " + hasValue);
    }
}
删除键值对
  • remove(Object key):根据键删除对应的键值对。
java 复制代码
import java.util.HashMap;
import java.util.Map;

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

        map.remove("Apple"); // 删除键为"Apple"的键值对
        System.out.println("Updated map: " + map);
    }
}

2.3 Map的不同实现类

实现类 特点
HashMap 基于哈希表实现,允许null键和null值,线程不安全,性能高
TreeMap 基于红黑树实现,按键的自然顺序或自定义顺序排序,不允许null
LinkedHashMap 维护插入顺序,性能与HashMap接近,线程不安全
HashTable 线程安全,不允许null键或null值,性能较低

三、Set集合

3.1 Set集合介绍

Set是Java集合框架中的一个接口,它不允许存储重复元素。Set中的元素通常没有固定的存储顺序,但某些实现类(如TreeSet)可以保持有序。常见的Set实现类有HashSetLinkedHashSetTreeSet

3.2 Set集合的常见方法

添加元素
  • add(E e):向集合中添加一个元素,如果元素已存在,则返回false
java 复制代码
import java.util.HashSet;
import java.util.Set;

public class SetAddExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        boolean added1 = set.add("Apple"); // 添加元素
        boolean added2 = set.add("Banana");
        boolean added3 = set.add("Apple"); // 尝试添加重复元素

        System.out.println("Added 'Apple': " + added1);
        System.out.println("Added 'Banana': " + added2);
        System.out.println("Added 'Apple' again: " + added3);
        System.out.println("Set content: " + set);
    }
}
检查元素是否存在
  • contains(Object o):检查集合中是否包含指定元素。
java 复制代码
import java.util.HashSet;
import java.util.Set;

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

        boolean containsApple = set.contains("Apple"); // 检查是否包含"Apple"
        boolean containsOrange = set.contains("Orange"); // 检查是否包含"Orange"

        System.out.println("Contains 'Apple': " + containsApple);
        System.out.println("Contains 'Orange': " + containsOrange);
    }
}
移除元素
  • remove(Object o):从集合中移除指定元素。
java 复制代码
import java.util.HashSet;
import java.util.Set;

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

        boolean removed = set.remove("Apple"); // 移除"Apple"
        System.out.println("Removed 'Apple': " + removed);
        System.out.println("Set content after removal: " + set);
    }
}

3.3 Set的不同实现类

实现类 特点
HashSet 基于哈希表实现,无序,允许null值,线程不安全
LinkedHashSet 维护插入顺序,性能与HashSet接近,线程不安全
TreeSet 基于红黑树实现,按键的自然顺序或自定义顺序排序,不允许null

总结

  • List是一个有序的集合,允许重复元素,适合需要频繁访问元素的场景。

  • Map是一个键值对集合,键唯一,值可以重复,适合需要通过键快速查找值的场景。

  • Set是一个不允许重复元素的集合,适合需要存储唯一元素的场景。

通过掌握这些集合的特点和常见方法,我们可以根据具体需求选择合适的集合类型,从而更高效地处理数据。希望这篇文章对你有所帮助!

相关推荐
jackson凌9 分钟前
【Java学习方法】终止循环的关键字
java·笔记·学习方法
种时光的人21 分钟前
Java多线程的暗号密码:5分钟掌握wait/notify
java·开发语言
猫猫头有亿点炸27 分钟前
C语言中的递归1.0
c语言·开发语言
猫猫头有亿点炸44 分钟前
C语言中小写字母转大写字母
c语言·开发语言·算法
我家领养了个白胖胖1 小时前
#和$符号使用场景 注意事项
java·后端·mybatis
Java中文社群1 小时前
大模型向量数据库去重的N种实现方案!
java·人工智能·后端
forestsea1 小时前
Maven 依赖坐标与BOM统一管理
java·maven
豆芽脚脚1 小时前
SpEl表达式使用示例
java·spel
论迹1 小时前
【JavaEE】-- MyBatis操作数据库(1)
java·开发语言·数据库·java-ee·mybatis
泉城老铁1 小时前
springboot对接upd一篇文章就足够
java·后端·架构