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

文章目录

  • Java集合框架:List,Set,Map,队列
    • Java集合框架是什么?
    • 如何使用?
      • List
      • Set
      • Map
      • 队列
    • 什么场景使用?
    • 优缺点是什么?
      • List
      • Set
      • Map
      • 队列
    • 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 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 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 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 queue = new LinkedList<>();
  3. 添加元素:queue.add("元素1");
  4. 获取并删除队列头部的元素:String element = queue.poll();
  5. 遍历队列:使用迭代器遍历队列。

什么场景使用?

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

优缺点是什么?

List

优点:

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

缺点:

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

Set

优点:

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

缺点:

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

Map

优点:

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

缺点:

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

队列

优点:

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

缺点:

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

Java示例

List示例

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示例

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示例

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);
        }
    }
}

队列示例

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等
元素 有序的、可重复的 无序的、不可重复的 以键值对的形式存储、键不可重复、值可重复的数据结构 先进先出的数据结构、支持插入、删除、查找等操作
存储 按索引顺序存储 无序存储 以键值对的形式存储 按插入顺序存储
访问 可以通过索引值对列表进行访问和修改 不能直接访问、可以通过迭代器进行访问 可以通过键值对进行访问和修改 可以通过队列头和队列尾进行访问和修改
性能 读取速度快,添加和删除速度较慢 添加和删除速度快,读取速度较慢 读取速度快,添加和删除速度较慢 添加和删除速度快,读取速度较慢
应用 适用于需要按索引顺序访问的情况 适用于需要去重的情况 适用于需要以键值对形式存储数据的情况 适用于先进先出的数据操作的情况

你可能感兴趣的:(#,java相关,java,数据结构)