数组
\\一个普通的长度为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类常用方法
- isLetter()
是否是一个字母 - isDigit()
是否是一个数字字符 - isWhitespace()
是否是一个空白字符 - isUpperCase()
是否是大写字母 - isLowerCase()
是否是小写字母 - toUpperCase()
指定字母的大写形式 - toLowerCase()
指定字母的小写形式 - 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);