-
嵌套类/内置类/内部类/内部接口
-
K : key V : value E : element R : ReturnType T : type
-
-
Map<K, V> : 存储的是键值对。每个键值对成为映射项(Entry);键唯一,值是可重复的;每个键最多只能映射到一个值。
-
HashMap : 键采用哈希表结构,允许null键null值,线程不安全
-
LikedHashMap<K, V> :采用 哈希表 + 链表 结构,保证键的插入顺序和迭代顺序一致
-
Hashtable<Object,Object> :键采用哈希表结构,允许null键null值,线程安全
-
Properties : 表示了一个持久的属性集。Properties 可保存在流中或从流中加载.性列表中每个键及其对应值都是一个字符串。
-
-
TreeMap : 键采用二叉树结构,对键进行排序
-
自然排序 : Comparable<T> : 要求实体类实现该接口
-
自定义排序 : Comparator<T> : 不需要实体类实现该接口,需要编写比较器
-
treeMap.forEach((k, v) >System.out.println(k + " ::: " + v));
-
-
-
// V put(K key, V value) : 当键是第一次存入map时,返回 null ;
// 如果不是第一次,用新值取代旧值,并将旧值作为返回值返回
map.put('d', 4);
// int size() 映射项的个数,返回此映射中的键-值映射关系数。
System.out.println("map.size() = " + map.size());
// V get(Object key) 根据键获取值
// 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
// Set<K> keySet() : 将所有的键提取出来存到 Set 中,返回此映射中包含的键的 Set 视图。
// 删
// V remove(Object key)
// 果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
Integer remove = map.remove(null);
// void clear()
// 从此映射中移除所有映射关系(可选操作)。
// boolean containsKey(Object key)
// 果此映射包含指定键的映射关系,则返回 true。
System.out.println("map.containsKey('d')="+map.containsKey('d'));
// boolean containsValue(Object value)
// 如果此映射将一个或多个键映射到指定值,则返回 true。
System.out.println("map.containsValue(1)="+map.containsValue(1));
// boolean isEmpty()
// 如果此映射未包含键-值映射关系,则返回 true。
// JDK8.0新增
// static <K,•V> Map<K,•V> copyOf•(Map<? extends K,•? extends V> map) 返回的是不可变映射
//Map的遍历方式
map.forEach((key, value2) -> {
System.out.println(key + " ^_^ " + value2);
});
// default V getOrDefault•(Object key, V defaultValue) 8.0
map.getOrDefault('a', 3306)
// default V putIfAbsent•(K key, V value) : 存在就不添加,也不修改值,并且返回指定的键对应的值; 不存在时才添加
Integer integer = map.putIfAbsent('n', 143);
// default boolean remove•(Object key, Object value) : 根据键和值进行移除,必须该映射项的键和值完全匹配,才能移除掉
boolean flag = map.remove('A', 1);
// default V replace•(K key, V value)
Integer replace = map.replace('e', 3333);
// default boolean replace•(K key, V oldValue, V newValue)
boolean replace1 = map.replace('Y', 25, 5555);
// default void replaceAll•(BiFunction< K,• V,• V> function)
map.replaceAll((k, v) -> v += 10);
泛型:操作的数据类型不确定的问题
-
类的自定义泛型
-
普通函数可以访问类上定义的泛型
-
静态函数时不能访问类上定义的泛型
-
-
? : 通配符
-
上限: 从父类开始向下进行限制 ? extends E E 和 E的子类型
-
下限: 从父类开始向下进行限制 ? super E E 和 E的父类型
-
-
数组 ---> 集合 : 转换后不能使用集合的增删功能 , 否则 UnsupportedOperationException
-
Arrays : static <T> List<T> asList(T... a)
-
返回一个受指定数组支持的固定大小的列表。
-
引用型数组 : 转换后,数组中的元素作为集合中元素进行存储
-
基本数据类型数组 : 转换后 , 数组本身作为集合的元素进行存储
-
-
集合 ---> 数组,Collection 接口
-
// Object[] toArray() Object[] objects = list.toArray(); for (Object o : objects) { System.out.println("o = " + o); } // <T> T[] toArray(T[] a)
String[] strings1 = list.toArray(new String[0]);
// Stream : 1.获取Stream 2.中间操作 3.终止操作 :forEach()是终止操作之一
Stream<String> stream = Arrays.stream(strings1);// 获取到的Stream对象只能使用一次
stream.forEach(System.out::println);
// stream.forEach(System.out::println);// Stream对象第二次使用 会有 : IllegalStateException
Arrays.stream(strings1).forEach(System.out::println);
-