259/260数据结构——红黑树和List集合介绍以及常用方法
红黑树
二又树: binary tree,是每个结点不超过2的有序树(tree)。
简单的理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点。
二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作“左子树"和“右子树"。
List集合介绍以及常用方法
在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。
java,uti1.List接口继承自 Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。
在Lst集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。
另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序致
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):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
A:添加功能 boolean add(E e):向集合中添加一个元素 void add(int index, E element):在指定位置添加元素 boolean addAll(Collection<? extends E> c):向集合中添加一个集合的元素。 B:删除功能 void clear():删除集合中的所有元素 E remove(int index):根据指定索引删除元素,并把删除的元素返回 boolean remove(Object o):从集合中删除指定的元素 boolean removeAll(Collection<?> c):从集合中删除一个指定的集合元素。 C:修改功能 E set(int index, E element):把指定索引位置的元素修改为指定的值,返回修改前的值。 D:获取功能 E get(int index):获取指定位置的元素 Iterator iterator():就是用来获取集合中每一个元素。 E:判断功能 boolean isEmpty():判断集合是否为空。 boolean contains(Object o):判断集合中是否存在指定的元素。 boolean containsAll(Collection<?> c):判断集合中是否存在指定的一个集合中的元素。 F:长度功能 int size():获取集合中的元素个数 G:把集合转换成数组 Object[] toArray():把集合变成数组。
注意:
操作索引的时候,一定要防止索引越界异常
IndexOutOfBoundsException,索引越界异常,集合会报
ArrayIndexOutOfBoundsException,数组索引越界异常,
StringIndexOutOfBoundsException,字符串索引越界异常
public static void main(String[] args) {
//创建一个List集合对象,多态
List<String> list = new ArrayList<>();//使用add方法往集合中添加元素
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
list.add("aa");//打印集合
//System.out.println(list);// [aa, bb, cc, dd, aa] 不是地址重写了tostring
//public void add(int index,E element);//将指定的元素,添加到该集合中的指定位置上。//在c和d之间添加一个itheima
list.add(3, "itheima");//[aa, bb, cc, itheima,dd,al
System.out.println(list);
//public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素。//移除元素
String removeE = list.remove(2);
System.out.println("被移除的元素:" + removeE);//被移除的元素:cc
System.out.println(list);// l[aa, bb, itheima,dd, aa]
//public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。//把最后一个aa,替换为A
String setE = list.set(4, "A");
System.out.println("被替换的元素: " + setE);//被替换的元素:a
System.out.println(list);//[aa, bb, itheima, dd, 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 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本