Java-集合框架-List,Set,Map,队列

文章目录

Java集合框架:List,Set,Map,队列

Java集合框架是什么?

Java集合框架是一组用于存储和操作数据的类和接口。它提供了不同类型的集合,如List,Set,Map和队列,以满足不同的需求。

  • List:有序的集合,允许重复的元素。
  • Set:无序的集合,不允许重复的元素。
  • Map:键值对的集合,每个元素都包含一个键和一个值。
  • 队列:先进先出(FIFO)的集合,用于处理按顺序排列的元素。

如何使用?

List

List接口的常用实现类有ArrayList和LinkedList。可以使用以下步骤使用List集合:

  1. 导入List类和实现类的包:import java.util.List; 和 import java.util.ArrayList;
  2. 创建List对象:List<String> list = new ArrayList<>();
  3. 添加元素:list.add("元素1");
  4. 访问元素:String element = list.get(0);
  5. 遍历集合:使用for循环或者迭代器遍历集合。

Set

Set接口的常用实现类有HashSet和TreeSet。可以使用以下步骤使用Set集合:

  1. 导入Set类和实现类的包:import java.util.Set; 和 import java.util.HashSet;
  2. 创建Set对象:Set<String> set = new HashSet<>();
  3. 添加元素:set.add("元素1");
  4. 判断元素是否存在:boolean contains = set.contains("元素1");
  5. 遍历集合:使用for-each循环遍历集合。

Map

Map接口的常用实现类有HashMap和TreeMap。可以使用以下步骤使用Map集合:

  1. 导入Map类和实现类的包:import java.util.Map; 和 import java.util.HashMap;
  2. 创建Map对象:Map<String, Integer> map = new HashMap<>();
  3. 添加键值对:map.put("键1", 1);
  4. 获取值:int value = map.get("键1");
  5. 遍历集合:使用for-each循环遍历键或值。

队列

队列接口的常用实现类有LinkedList和PriorityQueue。可以使用以下步骤使用队列:

  1. 导入队列类和实现类的包:import java.util.Queue; 和 import java.util.LinkedList;
  2. 创建队列对象:Queue<String> queue = new LinkedList<>();
  3. 添加元素:queue.add("元素1");
  4. 获取并删除队列头部的元素:String element = queue.poll();
  5. 遍历队列:使用迭代器遍历队列。

什么场景使用?

  • List:适用于需要按照元素的插入顺序进行操作的场景,可以包含重复的元素。
  • Set:适用于需要保持唯一性的元素集合,不允许重复的元素。
  • Map:适用于需要通过键值对进行操作的场景,每个键都是唯一的。
  • 队列:适用于需要按照先进先出顺序处理元素的场景。

优缺点是什么?

List

优点:

  • 可以按照插入顺序访问元素。
  • 可以包含重复的元素。

缺点:

  • 在大型数据集合中查找元素的效率较低。

Set

优点:

  • 元素不重复,保持唯一性。
  • 查找元素的效率较高。

缺点:

  • 无序,不能按照插入顺序访问元素。

Map

优点:

  • 可以通过键值对进行操作,便于查找和修改元素。
  • 键是唯一的,保持唯一性。

缺点:

  • 无序,不能按照插入顺序访问元素。

队列

优点:

  • 按照先进先出的顺序处理元素。

缺点:

  • 无法在中间插入或删除元素。

Java示例

List示例

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

public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        
        list.add("元素1");
        list.add("元素2");
        list.add("元素3");
        
        for (String element : list) {
            System.out.println(element);
        }
    }
}

Set示例

java 复制代码
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        
        set.add("元素1");
        set.add("元素2");
        set.add("元素3");
        
        for (String element : set) {
            System.out.println(element);
        }
    }
}

Map示例

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

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        
        map.put("键1", 1);
        map.put("键2", 2);
        map.put("键3", 3);
        
        for (String key : map.keySet()) {
            int value = map.get(key);
            System.out.println(key + ": " + value);
        }
    }
}

队列示例

java 复制代码
import java.util.Queue;
import java.util.LinkedList;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        
        queue.add("元素1");
        queue.add("元素2");
        queue.add("元素3");
        
        while (!queue.isEmpty()) {
            String element = queue.poll();
            System.out.println(element);
        }
    }
}

以上示例分别展示了List,Set,Map和队列的基本用法。根据具体需求选择合适的集合类型,以提高代码的效率和可读性。

对比

维度 List Set Map 队列
实现类 ArrayList、LinkedList、Vector等 HashSet、LinkedHashSet、TreeSet等 HashMap、LinkedHashMap、TreeMap等 LinkedList、PriorityQueue等
元素 有序的、可重复的 无序的、不可重复的 以键值对的形式存储、键不可重复、值可重复的数据结构 先进先出的数据结构、支持插入、删除、查找等操作
存储 按索引顺序存储 无序存储 以键值对的形式存储 按插入顺序存储
访问 可以通过索引值对列表进行访问和修改 不能直接访问、可以通过迭代器进行访问 可以通过键值对进行访问和修改 可以通过队列头和队列尾进行访问和修改
性能 读取速度快,添加和删除速度较慢 添加和删除速度快,读取速度较慢 读取速度快,添加和删除速度较慢 添加和删除速度快,读取速度较慢
应用 适用于需要按索引顺序访问的情况 适用于需要去重的情况 适用于需要以键值对形式存储数据的情况 适用于先进先出的数据操作的情况
相关推荐
码爸2 小时前
b树详细介绍与示例
数据结构·b树
蛋蛋的就会顺顺的9 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8269 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
开发小能手1239 小时前
答案daanC语言
数据结构·算法
小 黄 鸡9 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
伯恩bourne11 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_12 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
省钱兄--zs12 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
顽疲12 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog13 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友