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];

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<String>());
    而一定要是map.getOrDefault(str,new ArrayList<String>());
    因为List<>()是一个接口,不可以被实例化。而ArrayList可以被实例化。

常见异常

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

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<>();

常见数据结构

哈希表

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();

Char和Character类

//用内置数据类型定义一个字符
char ch = 'a';

//用包装类定义一个字符类对象
Character ch = new Character('a');

拆箱和装箱

将一个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);

Math

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2.7版(2020.4.7)     1) 调整 添加() 方法. 增加可选参数 参_不覆盖 (当键值存在时不进行值覆盖)     2) 添加 添加_指针() 方法. (具体用法参考使用例子)     3) 添加 cha询_指针() 方法. (具体用法参考使用例子)     4) 添加 有序模式,创建时可选参数.(此模式下  取所有键() 取所有值()  将按添加时的顺序来取出数组,时间复杂度: O(1).具体用法参考使用例子)     5) 添加 有序_插入() 方法. (有序模式下使用.)     6) 添加 有序_取序号() 方法. (有序模式下使用.)     7) 添加 有序_取序号键值() 方法. (有序模式下使用.通过遍历序号取键值,性能较低,单次取值时间复杂度: O(n),非必要不建议使用)     8) 说明 枚举键值还是乱序枚举,因为即便是有序模式xx的储存依然是无序的.可使用 取所有键() 取所有值() 存到数组来遍历. 2.6版(2020.3.31)     1) 修复 值运算() 方法 异常问题. (感谢 精易论坛  【qq1347522182】 的反馈)     2) 添加 寻找文本键 方法(功能类似 是否包含文本键 方法,多2个参数【参_开始位置】【参_返回键名长度】).     3) 调整 创建() 方法 添加参数 参_不使用内存池 (默认为假(使用内存池), 为真则不使用内存池(xx量不大时可以选择不使用内存池以节省内存使用))     4) 优化 自定义xx_模版 类 (优化后无需对自定义xx成员进行引用,只要将模版内的【自定义xx】类型 全部更改成 所需的类型即可) 2.5版(2020.1.11)     1) 修复 模块初始化优先级问题导致的异常. 2.4版(2019.12.16)     1) 优化 内部添加内存池,使用私有堆申请内存时改为内存池来分配内存,添加() 和 载入表() 性能得到显著提升。 2.3版(2019.12.9)     1) 修复 取值的键数组 逻辑值获取失败问题。     2) 调整 长整数键的哈希计算调整为单独的方法调用,减少些汇编代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸡鸭扣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值