Map(图)
是双列集合,有键值对
1.特点:
- 和collection的区别
- map存储元素是成对出现的,键是唯一的,值可重复,实现类是hashmap,无顺序
- Collection存储元素是单独的
- map集合的数据结构只针对键有效,和值无关
- collection的数据结构针对元素有效
2.功能
- 添加:put()方法
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
Map<Integer, String> map=new HashMap<>();
System.out.println(map.put(1, "123"));
System.out.println(map.put(2, "123"));//这两个输出值为null,因为1,2都是第一次存储的键
System.out.println(map.put(2, "456"));//输出为123,因为456替换掉之前的123,所以返回之前的123
- 删除功能: clear()方法,remove()方法
前者清除集合的所有内容,后者删除键所对应的内容,并返回被删除的值
Map<Integer, String> map=new HashMap<>();
//添加值
map.put(1,"123");
map.put(2,"456");
map.put(3,"123");
map.remove(3);//移除键3所对应的值
System.out.println(map.remove(3));//输出{3=123},这里输出的是被移除的值
System.out.println(map);//结果为{1=123, 2=456}
map.clear();//清除所有的值
System.out.println(map);//结果为{}
- 判断功能:
- isEmpty():判断集合是否为空
- containsKey():判断集合是否包含指定的键
- containsValue():判断集合是否包含指定的值
Map<Integer, String> map=new HashMap<>();
map.put(1,"123");
map.put(2,"456");
map.put(3,"123");
System.out.println(map.isEmpty());//结果为false,不为空
System.out.println(map.containsKey(1));//true,有键1
System.out.println(map.containsValue("123"));//true,有值123
- 获取功能
- get():默认输入键,得到所对应的值
- keySet():获得键的集合
- values():获得值的集合
- Set<Map.Entry<K,V>>:获取集合中的映射关系并组成set集合
Map<Integer, String> map=new HashMap<>();
map.put(1,"123");
map.put(2,"456");
map.put(3, "123");
System.out.println(map.get(1));//得到键1所对应的值
System.out.println(map.keySet());//结果为[1, 2, 3],键的集合
System.out.println(map.values());//结果为[123, 456, 123],值的集合
Set<Map.Entry<Integer, String>> aEntries=map.entrySet();//变为set集合
System.out.println(aEntries);//结果为[1=123, 2=456, 3=123]
- 长度功能:size():返回集合中的键值对的对数
hashmap
键是哈希表结构,可以保证键的唯一性
哈希值:散列函数是亿欧中从任何一种昂数据中创建小的数字的“指纹”的方法
值唯一:通过对文件内容进行加密运行得到的一组二进制值,用途是用于文件及校验或签名,正是因为这样的特点,它经常用来判断两份文件是否相同。
LinekedHashMap
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
TreeMap
键是红黑树结构,可以保证键的排序和唯一性
Collections
Collections:是针对集合进行操作的工具类,都是静态方法。
Collection和Collections的区别?
Collection:是单列集合的顶层接口,有子接口List和Set。
Collections:是针对集合操作的工具类,提供了一系列的静态方法,用于对集合中元素进行排序,搜索以及线程安全等各种操作