当前位置: 首页 > backend >正文

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

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

目录

一、List集合

1.1 List集合介绍

1.2 List集合的常见方法

添加元素

获取元素

修改元素

删除元素

元素排序

1.3 List的不同实现类

二、Map集合

2.1 Map集合介绍

2.2 Map集合的常见方法

添加键值对

获取值

检查键或值是否存在

删除键值对

2.3 Map的不同实现类

三、Set集合

3.1 Set集合介绍

3.2 Set集合的常见方法

添加元素

检查元素是否存在

移除元素

3.3 Set的不同实现类

总结


一、List集合

1.1 List集合介绍

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

1.2 List集合的常见方法

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

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

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。

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):用指定元素替换列表中指定位置的元素,并返回被替换的元素。

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):删除首次出现的指定元素。

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()方法,可以直接对列表进行排序。

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中添加键值对。

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):根据键获取对应的值。

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中是否包含指定的值。

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); // 检查值2System.out.println("Contains key 'Apple': " + hasKey);System.out.println("Contains value 2: " + hasValue);}
}
删除键值对
  • remove(Object key):根据键删除对应的键值对。

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

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):检查集合中是否包含指定元素。

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):从集合中移除指定元素。

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是一个不允许重复元素的集合,适合需要存储唯一元素的场景。

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

http://www.xdnf.cn/news/432.html

相关文章:

  • 焕活身心,解锁健康养生新方式
  • C#学习第17天:序列化和反序列化
  • 基于Redis的3种分布式ID生成策略
  • 多线程——阻塞队列(六)
  • LeetCode(Hot.2)—— 49.字符异位词分组题解
  • ARINC818-实现
  • ueditorplus编辑器已增加AI智能
  • UI键盘操作
  • 计算机网络期中复习笔记(自用)
  • 【技术派后端篇】 Redis 实现用户活跃度排行榜
  • 【UniApp】Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass
  • 如何优雅地为 Axios 配置失败重试与最大尝试次数
  • PG,TRPO,PPO,GRPO,DPO原理梳理
  • Windows桌面图标变白的解决方案
  • 不连续数据区间天数累计sql
  • Python制作简易PDF查看工具PDFViewerV1.0显示优化
  • HTML5+CSS3小实例:CSS立方体
  • 【Lua语言】Lua语言快速入门
  • redis和lua为什么能实现事务
  • 在STM32的定时器外设中,选择使用哪个外部时钟配置函数
  • 猫咪如厕检测与分类识别系统系列【十二】猫咪进出事件逻辑及日志优化
  • 【sylar-webserver】8 HOOK模块
  • Linux-进度条小程序
  • 【笔记】网路安全管理-实操
  • FiftyOne 管理数据
  • React-useRef
  • 实现Azure Data Factory安全地请求企业内部API返回数据
  • 图灵奖得主LeCun:DeepSeek开源在产品层是一种竞争,但在基础方法层更像是一种合作;新一代AI将情感化
  • Ubuntu20.04下Docker方案实现多平台SDK编译
  • 国网B接口协议图像数据上报通知接口流程详解以及上报失败原因(电网B接口)