数据结构--红黑树和List集合-介绍&常用方法
数据结构--红黑树
概念:
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
性质:
1、根节点是黑色的
2、每个节点不是红色的就是黑色的
3、红色节点的子节点一定是黑色的
4、红色节点不能相连
5、从任意节点出发,它每一条路径上的黑色节点数目是相同的
这里有一条总结红黑树的顺口溜:
一头一脚黑,
黑连红不连。
插入看叔伯,
删除看兄弟。
List集合-介绍&常用方法
又称为容器,用于存储,提取,删除数据。JDK提供的集合都包含在java.util包中。
集合分为collection和Map:
collection
Map
List集合-介绍
java.util.List接口继承自collection 接口,是单列集合的一个重要分支,习惯性地会将实现了List 接口的对象称为List集合。
在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。
另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
List接口特点∶
1.它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。
2.它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
3.集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
java.util.List接口extends collection接口list接口的特点:
1.有序的集合,存储元素和取出元素的顺序是一致的(存储123取出123)
2.有索引,包含了一些带索引的方法
3.允许存储重复的元素
常用方法
List接口中带索引的方法(特有)
- public void add(int index,E element):将指定的元素,添加到该集合中的指定位置上。- public E get(int index):返回集合中指定位置的元素。
- public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素。
- public E set(int index,E eLement):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
注意:
操作索引的时候,一定要防止索引越界异常
IndexOutOfBoundsException,索引越界异常,集合会报
ArrayIndexOutOfBoundsException,数组索引越界异常,
StringIndexOutOfBoundsException,字符串索引越界异常
public static void main(String[] args) { //创建一个List集合对象,多态 List<String> list = new ArrayList<>();//使用add方法往集合中添加元素 list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("a");//打印集合 //System.out.println(list);// [a, b, c, d, a] 不是地址重写了tostring //public void add(int index,E element);//将指定的元素,添加到该集合中的指定位置上。//在c和d之间添加一个itheima list.add(3, "itheima");//[a, b, c, itheima,d,al System.out.println(list); //public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素。//移除元素 String removeE = list.remove(2); System.out.println("被移除的元素:" + removeE);//被移除的元素:c System.out.println(list);// l[a, b, itheima,d, a] //public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。//把最后一个a,替换为A String setE = list.set(4, "A"); System.out.println("被替换的元素: " + setE);//被替换的元素:a System.out.println(list);//[a, b, itheima, d, A] // List集合遍历有3种方式 //使用普通的for循环 for (int i = 0; i < list.size(); i++) { // public E get(int index):返回集合中指定位置的元素。 String s = list.get(i); System.out.println(s); } //使用迭代器 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()){ String next = iterator.next(); System.out.println(next); } //使用增强for循环 for (String s : list) { System.out.println(s); } // 越界异常 // String s = list.get(5); // System.out.println(s);//IndexOutOfBoundsException: Index: 5, Size: 5 }
public class Demo01LIst { public static void main(String[] args) { //创建一个list集合对象,多态 ArrayList<String> list=new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); //打印集合 System.out.println(list); // --public void add(int index,E element):将指定的元素,添加到集合中指定的位置 //在c和d之间添加一个元素 list.add(2,"bbb"); System.out.println(list); //-public E get(int index):返回集合中指定的元素 String s = list.get(4); System.out.println(s); // --public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素, String remove = list.remove(1); System.out.println("移除的是:"+remove); // --public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素, String set = list.set(0, "aaa"); System.out.println("修改的是:"+set); //list集合遍历有三种方式 for (int i = 0; i < list.size(); i++) { String s1 = list.get(i); System.out.println(s1); } //使用迭代器遍历 Iterator<String> it = list.iterator(); while(it.hasNext()){ String next = it.next(); System.out.println(next); } //使用增强for循环遍历 for (String l :list) { System.out.println(l); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix