Map 映射 通过某一个key可以直接定位到一个value值
存储的方式以 键值对 存储 key-value
key无序无重复 value无序可重复
key无序还是一样,指的是存入顺序与取得顺序不一致
key无重复当然指的是 元素不能一致
存储的方式以 键值对 存储 key-value
key无序无重复 value无序可重复
key无序还是一样,指的是存入顺序与取得顺序不一致
key无重复当然指的是 元素不能一致
1.map基本使用
HashMap
TreeMap
Properties
HashMap
1.包 java.util
2.如何创建对象
3.基本方法
增删改查
增put(key,value) 存放一组映射关系 key-value
1.key存储的顺序与取得顺序不同
2.不同的key可以存储相同的value
3.key若有相同的 则将 原有的value覆盖而不是拒绝存入(跟set刚好相反)
删E = remove(key);
改put(key,value1) put(key,value2)
replace(key,newValue)
查E = get(key)
遍历map集合? key不一定什么样
获取到所有的key 遍历key 通过key获取value
Set<Key> = keySet()获取全部的key
Set<Entry> = entrySet();
size();
4.除了上述几个常用的方法外 其他API中提供的方法
clear containsKey(key) containsValue(value)
getOrDefault(key,defaultValue);如果key存在就返回对应的value 若没有找到则返回默认值
isEmpty()
putAll(map)
putIfAbsent(key,value);//如果key不存在才向集合内添加 如果key存在就不添加啦
5.map集合在什么情形下用?
1.想要存储一组元素
数组 or 集合 如果存储的元素以后长度不变用数组 如果长度以后不确定 用集合
2.如果发现长度以后不确定--->集合
List Set Map
List家族有序的 存储有顺序用这个
ArrayList 更适合遍历轮询
LinkedList 更适合插入和删除
Stack LIFO
Set家族无重复 存储元素希望自动去掉重复元素用这个
Hash 性能更高
Tree 希望存进去的元素自动去重复 同时还能自动排序
Map家族k-v 通过唯一的k快速找寻v用这个
Hash 性能更高
Tree 希望存进去的元素key自动排序
6.登录小流程
能体会每一个不同集合的特点
HashMap
TreeMap
Properties
HashMap
1.包 java.util
2.如何创建对象
3.基本方法
增删改查
增put(key,value) 存放一组映射关系 key-value
1.key存储的顺序与取得顺序不同
2.不同的key可以存储相同的value
3.key若有相同的 则将 原有的value覆盖而不是拒绝存入(跟set刚好相反)
删E = remove(key);
改put(key,value1) put(key,value2)
replace(key,newValue)
查E = get(key)
遍历map集合? key不一定什么样
获取到所有的key 遍历key 通过key获取value
Set<Key> = keySet()获取全部的key
Set<Entry> = entrySet();
size();
4.除了上述几个常用的方法外 其他API中提供的方法
clear containsKey(key) containsValue(value)
getOrDefault(key,defaultValue);如果key存在就返回对应的value 若没有找到则返回默认值
isEmpty()
putAll(map)
putIfAbsent(key,value);//如果key不存在才向集合内添加 如果key存在就不添加啦
5.map集合在什么情形下用?
1.想要存储一组元素
数组 or 集合 如果存储的元素以后长度不变用数组 如果长度以后不确定 用集合
2.如果发现长度以后不确定--->集合
List Set Map
List家族有序的 存储有顺序用这个
ArrayList 更适合遍历轮询
LinkedList 更适合插入和删除
Stack LIFO
Set家族无重复 存储元素希望自动去掉重复元素用这个
Hash 性能更高
Tree 希望存进去的元素自动去重复 同时还能自动排序
Map家族k-v 通过唯一的k快速找寻v用这个
Hash 性能更高
Tree 希望存进去的元素key自动排序
6.登录小流程
能体会每一个不同集合的特点
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; public class LoginService { //设计一个方法 用来登录认证 一维数组 // private String[] userBox = new String[]{"123","1234","12345"}; // private int[] passwordBox = new int[]{123,1234,12345}; // public String loingForArray(String name,String password){ // for(int i=0;i<userBox.length;i++){ // if(userBox[i].equals(name)){ // if(passwordBox[i]==Integer.parseInt(password)){ // return "登录成功"; // } // break; // } // } // return "用户名或密码错误"; // } //设计一个方法 用来登录认证---ArrayList // private ArrayList<String> userBox = new ArrayList<String>(); // { // userBox.add("123-123"); // userBox.add("1234-1234"); // userBox.add("12345-12345"); // } // public String loginForList(String name,String password){ // for(int i=0;i<userBox.size();i++){ // String[] value = userBox.get(i).split("-");//一个人的信息 v[0] v[1] // if(value[0].equals(name)){ // if(value[1].equals(password)){ // return "登录成功"; // } // break; // } // } // return "用户名或密码错误"; // } //设计一个方法 用来登录认证-----Set // private HashSet<String> userBox = new HashSet<String>(); // { // userBox.add("123-123"); // userBox.add("1234-1234"); // userBox.add("12345-12345"); // } // public String loginForSet(String name,String password){ // Iterator<String> it = userBox.iterator(); // while(it.hasNext()){ // String[] value = it.next().split("-"); // if(value[0].equals(name)){ // if(value[1].equals(password)){ // return "登录成功"; // } // break; // } // } // return "用户名或密码错误"; // } //设计一个方法 用来登录认证---map name(唯一) pass private HashMap<String,Integer> userBox = new HashMap<String,Integer>(); { userBox.put("123",123); userBox.put("1234",1234); userBox.put("12345",12345); } public String loginForMap(String name,String password){ Integer realPassword = userBox.get(name);//null if(realPassword!=null && realPassword.equals(Integer.parseInt(password))){//名存在 return "登录成功"; } return "用户名或密码错误"; } }
7.HashMap底层的数据结构存储
散列表的形式 数组+链表
Person对象存入HashMap中? 可以
hashCode方法---->不同的对象 可以产生相同的hashCode码的
不同的hashCode码-->不同的对象
TreeMap 自然有序 按照Unicode编码自然有序
map集合中的key需要可比较的 key的对象需要实现Comparable接口
1.java.util包
2.构造方法
无参数 带map参数
3.常用方法
put get remove replace size
4.底层数据结构的存储
红黑二叉树
map集合中的key需要可比较的 key的对象需要实现Comparable接口
1.java.util包
2.构造方法
无参数 带map参数
3.常用方法
put get remove replace size
4.底层数据结构的存储
红黑二叉树