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

相关文章

[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>)} 绑定属性直接使用花括号{}   注

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A

hashmap的存值,各种遍历方法

package com.jefflee;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class HashmapTest {// 遍历Hashmap的四种方法public static void main(String[] args) {//hashmap可以存一个null,把

JSP的增删改查part2

增加显示数据库表格cdsn的功能 1. 》》对CdsnDao接口和方法,CdsnService接口和方法进行处理,并增加CdsnServlet用于对新建展示页面进行处理 对cdsnDao接口和方法增加 》》接口 //获取cdsn用户数据列表 public List<cdsn> getCdsnList();》》CdsnDaoImpl增加内容//获得数据库所有数据publ

JSP的增删改查part1

运用Myeclisp对数据库进行增删改查 要建立6个库 1).其中dao层用与连接数据库和对数据库进行相关操作; 2).entity层用于存放数据库连接后的实体数据; 3.)service层是在mcv三层模式中新添加一层,能够更加清晰的定义应用程序的边界,需要操作数据的时候,通过service层访问DAO层来实现。