数据结构--红黑树和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);
 
        }
    }
}
复制代码

 

posted @   漁夫  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示