【JAVA】Java基础—面向对象编程:常用API与数据结构—集合框架(List、Set、Map等)

news/2024/11/26 1:42:41/

Java集合框架是Java编程语言中一个强大的工具集,它提供了数据结构的实现和操作方法,用于存储和处理对象。Java集合框架的核心接口包括List、Set和Map,它们为开发者提供了灵活而高效的数据管理方式。在日常开发中,集合框架的使用无处不在,从简单的数据存储到复杂的数据处理,集合框架都能提供解决方案。

  • List:可以将List比作一个购物清单,清单上的物品是有序的,并且可以重复。

  • Set:可以将Set比作一个参加会议的人员名单,每个人只能出现一次。

  • Map:可以将Map比作一个字典,单词(键)和其定义(值)之间的映射。

1. Java集合框架的重要性

Java集合框架通过提供一组通用的数据结构,简化了数据管理和操作。这些数据结构包括但不限于列表(List)、集合(Set)、映射(Map)等,它们在各种应用场景中都能找到用武之地。

  • List:用于存储有序的元素集合,可以包含重复的元素。

  • Set:用于存储无序的、唯一的元素集合。

  • Map:用于存储键值对映射,键是唯一的,但值可以重复。

2. 实际应用场景
  • List:在需要保持元素顺序或允许重复的场景中,如处理用户输入的历史记录。

  • Set:在需要确保元素唯一性的场景中,如存储用户ID或产品SKU。

  • Map:在需要快速查找的场景中,如缓存数据或配置文件中的键值对。

一、List接口

1. ArrayList的使用
import java.util.ArrayList;
import java.util.List;public class ListExample {public static void main(String[] args) {// 创建一个ArrayListList<String> fruits = new ArrayList<>();// 添加元素fruits.add("Apple");fruits.add("Banana");fruits.add("Orange");// 获取元素String firstFruit = fruits.get(0);System.out.println("第一个水果: " + firstFruit); // 输出: 第一个水果: Apple// 遍历列表System.out.println("水果列表:");for (String fruit : fruits) {System.out.println(fruit);}// 删除元素fruits.remove("Banana");System.out.println("删除后水果列表: " + fruits);}
}

解释

  • ArrayListList接口的一个实现,底层是基于数组的动态数组。

  • 可以通过add()方法添加元素,通过get(int index)方法获取元素。

  • 使用增强型for循环遍历列表。

  • remove(Object o)方法用于删除指定的元素。

2. LinkedList的使用
import java.util.LinkedList;
import java.util.List;public class LinkedListExample {public static void main(String[] args) {// 创建一个LinkedListList<String> animals = new LinkedList<>();// 添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");// 获取第一个和最后一个元素String firstAnimal = animals.get(0);String lastAnimal = animals.get(animals.size() - 1);System.out.println("第一个动物: " + firstAnimal); // 输出: 第一个动物: DogSystem.out.println("最后一个动物: " + lastAnimal); // 输出: 最后一个动物: Horse// 删除第一个元素animals.remove(0);System.out.println("删除第一个元素后: " + animals);}
}

解释

  • LinkedListList接口的另一个实现,底层是基于链表的数据结构。

  • 适合频繁插入和删除操作的场景,因为它的元素插入和删除操作效率较高。

二、Set接口

1. HashSet的使用
import java.util.HashSet;
import java.util.Set;public class SetExample {public static void main(String[] args) {// 创建一个HashSetSet<String> colors = new HashSet<>();// 添加元素colors.add("Red");colors.add("Green");colors.add("Blue");colors.add("Red"); // 重复元素不会被添加// 检查元素是否存在boolean hasGreen = colors.contains("Green");System.out.println("集合中是否有绿色: " + hasGreen); // 输出: 集合中是否有绿色: true// 遍历集合System.out.println("颜色集合:");for (String color : colors) {System.out.println(color);}}
}

解释

  • HashSetSet接口的一个实现,基于哈希表。

  • 不允许重复元素,元素的顺序不保证。

  • 适合快速查找、插入和删除元素。

2. TreeSet的使用
import java.util.Set;
import java.util.TreeSet;public class TreeSetExample {public static void main(String[] args) {// 创建一个TreeSetSet<String> countries = new TreeSet<>();// 添加元素countries.add("USA");countries.add("China");countries.add("India");// 遍历集合(自动排序)System.out.println("国家集合:");for (String country : countries) {System.out.println(country);}}
}

解释

  • TreeSetSet接口的另一个实现,基于红黑树。

  • 元素按自然顺序排序。

  • 适合需要排序的场景。

三、Map接口

1. HashMap的使用
import java.util.HashMap;
import java.util.Map;public class MapExample {public static void main(String[] args) {// 创建一个HashMapMap<String, Integer> ages = new HashMap<>();// 添加键值对ages.put("Alice", 30);ages.put("Bob", 25);ages.put("Charlie", 35);// 获取值int ageOfAlice = ages.get("Alice");System.out.println("Alice的年龄: " + ageOfAlice); // 输出: Alice的年龄: 30// 遍历键值对System.out.println("年龄列表:");for (Map.Entry<String, Integer> entry : ages.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}}
}

解释

  • HashMapMap接口的一个实现,基于哈希表。

  • 允许键和值为null

  • 适合快速查找、插入和删除键值对。

2. TreeMap的使用
import java.util.Map;
import java.util.TreeMap;public class TreeMapExample {public static void main(String[] args) {// 创建一个TreeMapMap<String, String> capitals = new TreeMap<>();// 添加键值对capitals.put("USA", "Washington, D.C.");capitals.put("China", "Beijing");capitals.put("India", "New Delhi");// 遍历键值对(按键排序)System.out.println("国家和首都:");for (Map.Entry<String, String> entry : capitals.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}}
}

解释

  • TreeMapMap接口的另一个实现,基于红黑树。

  • 键按自然顺序排序。

  • 适合需要按键排序的场景。

总结

Java集合框架提供了丰富的数据结构选择,帮助开发者有效地管理和操作数据。理解和熟练使用这些集合类是编写高效Java应用程序的基础。


http://www.ppmy.cn/news/1549957.html

相关文章

微服务系列概览

分布式和微服务的区别是什么&#xff1f; 分布式是把一个集中式系统拆分成多个系统&#xff0c;每一个系统单独对外提供部分功能&#xff0c;整个分布式系统整体对外提供一整套服务。对于访问分布式系统的用户来说&#xff0c;感知上就像访问一台计算机一样。 而分布式架构的…

网络安全 - DOS

1.1.1 摘要 最近网络安全成了一个焦点&#xff0c;除了国内明文密码的安全事件&#xff0c;还有一件事是影响比较大的——Hash Collision DoS&#xff08;通过Hash碰撞进行的拒绝式服务攻击&#xff09;&#xff0c;有恶意的人会通过这个安全漏洞让你的服务器运行巨慢无比&…

[译]Elasticsearch Sequence ID实现思路及用途

原文地址:https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0 如果 几年前&#xff0c;在Elastic&#xff0c;我们问自己一个"如果"问题&#xff0c;我们知道这将带来有趣的见解&#xff1a; "如果我们在Elasticsearch中对索引操作进行全面排序会怎样…

在SQLyog中导入和导出数据库

导入 假如我要导入一个xxx.sql&#xff0c;我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置&#xff0c;点击执行即可 注意&#xff1a; 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择&#xff1a;备份/导出、…

移动端自动化环境搭建_Android

adb的安装与使用 adb安装adb环境变量adb使用adb常用命令adb简介adb作用 adb安装 选择对应系统进入下载界面&#xff0c;选中版本下载即可&#xff1a; Windows版本&#xff1a;Windows Mac版本&#xff1a;Mac Linux版本&#xff1a;Linux 安装完成后&#xff0c;进行压缩&…

Android开发教程案例源码分享-匹配动画多个头像飘动效果

Android开发教程案例源码分享-匹配动画多个头像飘动效果 匹配往往出现多个头像飘动&#xff0c;吸引人点击&#xff0c;有时出现的位置还不固定 一、思路&#xff1a; 用MotionLayout 二、效果图&#xff1a; 看视频更直观点&#xff1a; Android开发教程案例源码分享-匹配…

已解决java.lang.StackOverflowError异常的正确解决方法,亲测有效!!!

成功解决java.lang.StackOverflowError异常 本文目录 问题分析 报错原因 解决思路 解决方法 检查递归调用 优化算法 调整JVM栈大小 减少局部变量的使用 总结 在编写Java程序时&#xff0c;你可能会遇到一种名为java.lang.StackOverflowError的错误。这个问题通常是由…

用Python爬虫“偷窥”1688商品详情:一场数据的奇妙冒险

引言&#xff1a;数据的宝藏 在这个信息爆炸的时代&#xff0c;数据就像是一座座等待挖掘的宝藏。而对于我们这些电商界的探险家来说&#xff0c;1688上的商品详情就是那些闪闪发光的金子。今天&#xff0c;我们将化身为数据的海盗&#xff0c;用Python这把锋利的剑&#xff0…