• 2、数组、Map+HashMap、Set+Hashset、Char和Character类、String类和Char类、Math类


    数组

    \\一个普通的长度为1的整数数组
    Integer[] arr= new Integer[1];
    
    \\一个普通长度为1的同时元素初始化为1的整数数组。
    Integer[] arr= new Integer[]{1};
    
    \\一个长度为0的空数组
    Integer[] arr= new Integer[0];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Map

    常见方法

    • void clear( )
      从此映射中移除所有映射关系(可选操作)。

    • boolean containsKey(Object k)
      如果此映射包含指定键的映射关系,则返回 true。

    • boolean containsValue(Object v)
      如果此映射将一个或多个键映射到指定值,则返回 true。

    • Object get(Object k)
      返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。

    • boolean isEmpty( )
      如果此映射未包含键-值映射关系,则返回 true。

    • Object put(Object k, Object v)
      将指定的值与此映射中的指定键关联(可选操作)。

    • Object remove(Object k)
      如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

    • int size( )
      返回此映射中的键-值映射关系数。

    • getOrDefault(Object key, V defaultValue)
      返回指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
      所以注意默认值不可以是接口,他需要是个可以实例化的类。
      譬如不可以是map.getOrDefault(str,new List());
      而一定要是map.getOrDefault(str,new ArrayList());
      因为List<>()是一个接口,不可以被实例化。而ArrayList可以被实例化。

    常见异常

    • 当访问的值不存在的时候,方法就会抛出一个 NoSuchElementException 异常。
    • 当对象的类型和 Map 里元素类型不兼容的时候,就会抛出一个 ClassCastException 异常。
    • 当在不允许使用 Null 对象的 Map 中使用 Null 对象,会抛出一个 NullPointerException 异常。
    import java.util.Map;
    \\创建一个含有1-2对应映射关系的Map
    Map<Integer,Integer>map = Map.of(1,2);
    
    • 1
    • 2
    • 3

    HashMap

    HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
    HashMap 是无序的,即不会记录插入的顺序。

    import java.util.HashMap;
    
    \\定义一个有一个元素的HashMap
    Map<Integer,Integer>map = new HashMap<>(1);
    
    \\定义一个不定元素的HashMap
    Map<Integer,Integer>map = new HashMap<>();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    常见数据结构

    哈希表

    Set

    • void add(Object k)
      添加k

    • boolean contains(Object k)
      如果map中包含k,则返回true。

    HashSet

    HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合
    HashSet 允许有 null 值。
    HashSet 是无序的,即不会记录插入的顺序。
    HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
    HashSet 实现了 Set 接口。

    import java.util.HashSet; // 引入 HashSet 类
    
    //实例化途径一
    HashSet<String> sites = new HashSet<String>();
    
    //实例化途径二
    HashSet<String> sites = new HashSet<>();
    
    //实例化途径三,注意这样实例化需要同时引入Set包
    Set<String> sites = new HashSet();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Char和Character类

    //用内置数据类型定义一个字符
    char ch = 'a';
    
    //用包装类定义一个字符类对象
    Character ch = new Character('a');
    
    • 1
    • 2
    • 3
    • 4
    • 5

    拆箱和装箱

    将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。

    Character类常用方法

    1. isLetter()
      是否是一个字母
    2. isDigit()
      是否是一个数字字符
    3. isWhitespace()
      是否是一个空白字符
    4. isUpperCase()
      是否是大写字母
    5. isLowerCase()
      是否是小写字母
    6. toUpperCase()
      指定字母的大写形式
    7. toLowerCase()
      指定字母的小写形式
    8. toString()
      返回字符的字符串形式,字符串的长度仅为1

    String类和Char类(toCharArray)

    String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:
    String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了

    String s = "sab";
    char[] ca = s.toCharArray();
    Arrays.sort(ca);
    
    • 1
    • 2
    • 3

    Math

    提供了Math.max(Object a1, Object a2);
    Math.min(Object a1, Object a2);

  • 相关阅读:
    ios 短信验证码自动填充时总是被复制两遍
    吃豆人游戏-第12届蓝桥杯Scratch选拔赛真题精选
    剑指YOLOv7改进最新重参数化结构RepViT| 最新开源移动端网络架构ICCV 2023,1.3ms 延迟,速度贼快
    Metabase可视化BI系统部署安装及简单使用
    java学习第八天笔记-方法165-文字版格斗游戏
    [单片机课程设计报告汇总] 单片机设计报告常用硬件元器件描述
    利用决策树找出最优特征组合
    【前端面试题】02—59道CSS面试题
    什么灯对学生视力影响小?国AA级照度、无蓝光的护眼台灯
    【业务功能篇105】 微服务-springcloud-springboot-电商订单模块--秒杀服务-定时任务【上篇】
  • 原文地址:https://blog.csdn.net/zhiaidaidai/article/details/134309574