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

相关文章

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

PHP实现二叉树遍历(非递归方式,栈模拟实现)

二叉树定义是这样的:一棵非空的二叉树由根结点及左、右子树这三个基本部分组成,根据节点的访问位置不同有三种遍历方式: ① NLR:前序遍历(PreorderTraversal亦称(先序遍历)) ——访问结点的操作发生在遍历其左右子树之前。 ② LNR:中序遍历(InorderTraversal) ——访问结点的操作发生在遍历其左右子树之中(间)。 ③ LRN:后序遍历(PostorderT

08 增删查功能

划重点: lable 标签keyup:键盘事件标签内添加样式:style使用事件修饰符:preventforEach :遍历 数组indexOf: 可以返回要查询的某个字符串值在整个字符串中首次出现的位置下标findIndex:返回传入一个测试条件(函数)符合条件数组的首个元素的位置splice:向/从数组中添加/删除项目,然后返回被删除后的新的项目数组 黑椒蟹 一对: <!DOCTYPE

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注