Lambda表达式

  • 结构
    • (参数)->{方法体}
  • 可以用来简写匿名内部类的书写
  • 只能简化函数式接口的匿名内部类的写法
  • 函数式接口
    • 有且仅有一个抽象方法的接口叫做函数式接口,接口上分可以加@Functionalinterface注解

字符串

字符串比较

  • ==号比较的是地址值
  • boolean equals方法(要比较的方法)
    • 完全一样结果才是true,否则为false
  • boolean equalslgnoreCase(要比较的字符串)
    • 忽略大小写的比较

可以改变的字符串

字符串本身改变,不用定义一个新变量接收返回值

stringbuilder

  • //创建
    //无参
    stringbuilder 变量名 = new stringbuilder();
    //有参
    stringbuilder 变量名 = new stringbuilder("字符串");:
    
  • //添加
    变量名.append("要添加的字符串");
    //反转
    变量名.reverse();
    
  • 变量名本身只是一个容器,要想变成字符串需要用一个方法

    • string 字符串名 = 变量名.tostring();
      

stringjoiner

  • //创建
    //结构1
    stringjoiner 变量名 = new stringjoiner(间隔符号);
    
    • 每放入一个字符串后面就加入间隔符号
      • 例:1间隔符号2间隔符号3
    • 头尾没有
  • //创建
    //结构2
    stringjoiner 变量名 = new stringjoiner(间隔符号,开始符号,结束符号);
    
    • 每放入一个字符串后面就加入间隔符号
    • 例:开始符号1间隔符号2间隔符号3结束符号
  • //添加内容
    变量名.add(添加的内容);
    //求长度
    变量名.length();//需要接收
    //转为字符串
    string 字符串名 = 变量名.tostring();
    

以下api对字符串本身不会改变,需要定义一个新的变量接收返回值

  • //字符串截取
    要截取的字符串.substring(开始,结束);//包头不包尾
    要截取的字符串.substring(开始);//一直到结束
    
    //字符串获取每位字符
    要获取的字符串.charAt(索引);
    
    //字符串替换
    要替换的字符串.replace(旧值,新值);
    

集合

基础

字符串本身改变,不用定义一个新变量接收返回值

  • //创建
    集合类型<数据类型> 集合名字 = new 集合类型<>();
    //例
    ArrayList<Integer> list = new ArrayList<>();
    
  • //基础api
    //添加
    集合名字.add(要添加的元素);//返回true或者false
    //删除
    集合名字.remove(要删除的元素);//返回true或false
    //删除2
    集合名字.remove(索引);//返回被删除的元素
    //修改
    集合名字.set(旧值索引,"新值");//返回旧值
    //查询
    集合名字.get(要查询元素的索引);
    //获取集合的长度
    集合名字.size();
    

进阶

遍历

  • 迭代器

    • //1.创建迭代器对象
      iterator();
      //2.使用循环
      对象名.hasNext();
      //3.
      输出对象名.next();
      
  • 增强for

    • for(数据类型 变量名:数组或集合){}
      
  • lambda表达式

    • 集合名.forEach(new consumer<string>(){
          重写方法
      })
      

list

list包含arraylist和linkedlist

  • //插入
    add(索引,要插入的元素);
    //删除
    remove(要删除的索引(返回结果是被删除的元素));
    //获取指定元素
    get(获取指定索引的元素)
    //修改元素
    set(修改索引位置的元素(返回修改前的元素))
    //适用遍历
    for循环
    
  • linkedlist
    • //加
      addfirst(每次加的元素都是在第一个索引的位置);
      //删
      removeFirst(每次删的元素都是第一个索引位置的元素)
      //获取元素
      getfrist(索引)
      //加
      addlast(每次加的元素都是在最后一个索引的位置)
      //删
      removelast(每次删的元素都是最后一个索引位置的元素)
      //获取元素
      getlast(索引)
      
      
      

set

特点:无序,不重复,无索引

  • HashSet
    • 特点:无序,不重复,无索引
  • LinkedHashSet
    • 特点:有序,不重复,无索引
  • TreeSet
    • 特点:排序,不重复无索引

Map

键的特点:无序,不重复,无索引,值不做要求

  • HashMap
    • 键的特点:无序,不重复,无索引,值不做要求
  • LikedHashMap
    • 键的特点:有序,不重复,无索引,值不做要求
  • TreeMap
    • 键的特点:排序,不重复,无索引,值不做要求
常用API
  • //添加
    put(添加的元素,值2)
    //清空集合
    clear
    //判断集合是否为空
    isEmpty
    //获取某个值
    get
    //删除某个元素
    remove
    //判断是否包含某个键
    containsKey
    //判断是否包含某个值
    containsValue
    //获取全部键的集合
    public set<K> keyset()
    //获取全部值的集合
    collection <V> values();
    //合并集合
    要拷贝到的集合.putAll(要拷贝的集合)
    
    
遍历
  • 键找值

    • //1.获取键的全部值
      Set<String> key = map.keySet();
      //2.根据键获取值
      int value = map.get(keys);
      
  • 键值对

    • //1.将map集合转为set集合
      set<Map.Entry<string,integer>> 名 = map.entrySet();
      //2.增强for遍历
      for(泛型&nbsp;泛型名称:名){}
      //3.
      String key = 泛型名.getSet();
      //4.
      int value = map.getvalue();
      
  • lambda表达式

    • forEach(new BiConsumer<String, Integer>({
          重写方法
      })
      
properties
  • //写
    对象名.setproperty();
    //读
    对象名.load(文件路径)
    //存储到文件
    对象名.store(文件路径,随便写);
    //获取单独一个键的值
    对象名.getproperty(键);
    

泛型

  • //泛型类
    修饰符 class 类名<泛型变量>{}
    //泛型方法
    修饰符 <泛型变量>方法返回值 方法名(形参列表){}
    //泛型接口
    public interface 接口名<泛型变量>{}
    //通配符
    ?可以在使用泛型的时候代表一切类型
    

可变参数

  • 结构
    • 数据类型 … 变量名

不可变集合

  • 结构
    • 集合.of();

数据结构与算法

常见数据结构

    • 后进先出,先进后出
  • 队列
    • 先进先出,后进后出
  • 数组
    • 查询快,增删慢
  • 链表
    • 查询慢,增删较快
二叉树
  • 二叉查找数
    • 左边的节点比根节点小,右边的节点比根节点大
  • 平衡二叉树
    • 任意一个节点的左右两个子数高度差不超过1,任意一个的左右两个子数都是一颗平衡二叉树
    • 左左:当根节点左子数的左子数有节点插入导致二叉树不平衡
    • 左右:当根节点左子数的右子数有节点插入导致二叉树不平衡
    • 右右:当根节点右子数的右子数有节点插入导致二叉树不平衡
    • 右左:当根节点右子数的左子数有节点插入导致二叉树不平衡
  • 红黑树
    • 每一个节点是红色或者黑色的,根节点必须是黑色
    • 如果一个节点没有子节点或者父节点,则该节点相对应的值为nil,这些nil视为叶节点,为黑色
    • 如果某一个节点是红色,那么他的子节点必须是黑色
      • 不能出现两个红节点相连的情况
    • 对每一个节点,从该节点到其索引后代叶节点的简单路径上,均包含相同数目的黑色节点
    • 添加的节点可以是红也可以是黑色

算法

下面这两个排序大致相同,循环次数也大致相同

  • 冒泡排序
    • 核心思想:相邻的元素两两比较,
  • 选择排序
    • 从0索引开始,跟后面的元素一一比较

插入排序

  • 将0索引的元素到N索引的元素看做是有序的
  • 把N+1索引的元素到最后一个当成无序的
  • 遍历无序的数据,将遍历到的元素插入到有序序列合适的位置当中,相同插到后面

快速排序

  • 把0索引的数字作为基准数
  • 确定基准数在数组中正确的位置
  • 将比基准数小的数全部放左边
  • 比基准数大的数全部放右边,递归循环

单例模式

  • 饿汉单例
    • 定义一个类,将构造器私有化
    • 创建静态变量存储对象
  • 懒汉单例
    • 定义一个类,将构造器私有化
    • 创建静态变量存储对象
    • 提供一个返回单例对象的方法

原文地址:http://www.cnblogs.com/Myvlog/p/16818073.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性