Arraylist,TreeSet,TreeMap的增删改查及遍历

2024-04-04 21:36

本文主要是介绍Arraylist,TreeSet,TreeMap的增删改查及遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ArrayList :

是 Java 中一个动态数组,它基于可变长度数组实现,能够以恒定时间复杂度进行增删改操作,但遍历操作的时间复杂度为 O(n)。

有序,可重复,有索引

增删改查排序:

  • **add(E e):**向 ArrayList 的末尾添加一个元素。
  • **remove(int index):**从 ArrayList 中删除指定索引处的元素。
  • **set(int index, E element):**用给定元素替换 ArrayList 中指定索引处的元素。
  • **get(int index):**获取 ArrayList 中指定索引处的元素。
  • **list.sort(null):**使用自然排序对列表进行排序。
  • **Collections.sort(ArrayList<T> list):**使用归并排序算法对列表进行自然排序(按元素的自然顺序排序)。
  • toArray():返回一个包含 ArrayList 中所有元素的数组。
// 创建一个 ArrayList
ArrayList<String> arrayList = new ArrayList<>();// 增
arrayList.add("Alice");
arrayList.add("Bob");
arrayList.add("Carol");// 删
arrayList.remove(1);// 改
arrayList.set(0, "Alice (updated)");// 查
String firstElement = arrayList.get(0);

 TreeSet:

TreeSet 是 Java 中一个有序集合,它基于红黑树实现,能够以对数时间复杂度进行增删改查和遍历操作。

可排序,不重复,无索引。

增删改查:

  • **add(E e):**向 TreeSet 中添加一个元素。
  • **remove(Object o):**从 TreeSet 中删除一个元素。
  • **contains(Object o):**检查 TreeSet 中是否包含给定元素。
  • **first():**获取 TreeSet 中最小的元素。
  • **last():**获取 TreeSet 中最大的元素。

遍历:

  • **iterator():**返回 TreeSet 中元素的迭代器。
  • **descendingIterator():**返回 TreeSet 中元素的降序迭代器。
// 创建一个 TreeSet
TreeSet<String> treeSet = new TreeSet<>();// 增
treeSet.add("Alice");
treeSet.add("Bob");
treeSet.add("Carol");// 删
treeSet.remove("Bob");// 查
boolean containsAlice = treeSet.contains("Alice");// 遍历(使用迭代器遍历)
Iterator<String> iterator = treeSet.iterator();
while (iterator.hasNext()) {String name = iterator.next();System.out.println(name);
}// 遍历(使用降序迭代器遍历)
Iterator<String> descendingIterator = treeSet.descendingIterator();
while (descendingIterator.hasNext()) {String name = descendingIterator.next();System.out.println(name);
}

 

TreeMap :

是 Java 中的一个有序映射,它基于红黑树实现,能够以对数时间复杂度进行增删改查和遍历操作。

可排序,不重复,无索引。

增删改查:

  • **put(K key, V value):**向 TreeMap 中插入一个键值对,如果键已存在,则替换旧值。
  • **remove(Object key):**从 TreeMap 中删除一个键值对。
  • **get(Object key):**获取与给定键关联的值。
  • **replace(K key, V value):**用给定值替换与给定键关联的值。
  • **containsKey(Object key):**检查 TreeMap 中是否包含给定键。

遍历:

  • **keySet():**返回 TreeMap 中所有键的集合。
  • **values():**返回 TreeMap 中所有值的集合。
  • **entrySet():**返回 TreeMap 中所有键值对的集合。

 

// 创建一个 TreeMap
TreeMap<String, Integer> treeMap = new TreeMap<>();// 增
treeMap.put("Alice", 10);
treeMap.put("Bob", 20);
treeMap.put("Carol", 30);// 删
treeMap.remove("Bob");// 改
treeMap.replace("Alice", 15);// 查
Integer aliceScore = treeMap.get("Alice");// 遍历(使用 for-each 循环遍历键)
for (String key : treeMap.keySet()) {System.out.println("Key: " + key + ", Value: " + treeMap.get(key));
}// 遍历(使用 for-each 循环遍历值)
for (Integer value : treeMap.values()) {System.out.println("Value: " + value);
}// 遍历(使用 for-each 循环遍历键值对)
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}

这篇关于Arraylist,TreeSet,TreeMap的增删改查及遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876872

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三

Java遍历HashMap的6种常见方式

《Java遍历HashMap的6种常见方式》这篇文章主要给大家介绍了关于Java遍历HashMap的6种常见方式,方法包括使用keySet()、entrySet()、forEach()、迭代器以及分别... 目录1,使用 keySet() 遍历键,再通过键获取值2,使用 entrySet() 遍历键值对3,

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删