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

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

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

相关文章:

  • 【unity】Vulkan模式下部分Android机型使用VideoPlayer组件播放视频异常问题
  • 超简单的git学习教程
  • 又来聊一下加班的问题
  • jenkins尾随命令
  • Stable Diffusion秋叶整合包V4独立版Python本地API连接指南
  • 【AI提示词】IT专家顾问
  • 【Docker-14】容器操作案例
  • Java Web 之 互联网协议 100问
  • 向量陷阱:关键词、长度与相关性如何误导Embedding模型?
  • Spring中的AOP基础理解
  • 【网络篇】TCP vs UDP底层区别+网络编程概念
  • 数据结构排序算法全解析:从基础原理到实战应用
  • MySQL游标的定义和应用
  • Kubernetes相关的名词解释CNI插件(1)
  • 【Easylive】seataServer.properties 配置文件详细解析
  • stm32(gpio的四种输出)
  • 2025年渗透测试面试题总结-拷打题库06(题目+回答)
  • 网络--socket编程(2)
  • 【Linux】条件变量、基于阻塞队列的生产者消费者模型
  • java怎么找bug?Arthas原理与实战指南
  • 85岁眼科专家、武汉大学人民医院原眼科主任喻长泰逝世
  • 四川省委统战部副部长(正厅级)张荣履新峨眉电影集团“一把手”
  • 海外考古大家访谈|马克·波拉德:以考古意识为本位的科技考古学家
  • 释新闻|特朗普喊话鲍威尔早点走人,美国总统能否解雇美联储主席?
  • 鲁比奥在法国只字不提关税,美国威胁下欧盟勉力维持统一战线
  • 瑞士工业巨头ABB拟分拆机器人业务独立上市,市场份额全球第二