第二十五天 Map集合

通过学生的学号sid,获取学生的信息(姓名....)

现在使用单列集合Collection<E></>--->List /Set

List<Student>,本身就是将整个对象存储进去了,获取方式直接获取学生数据,遍历---->判断sid是多少

所以Java提供 Map<K,V> 键值对(映射项),一个键(必须唯一)对应一个值(值可以重复)

面试题

Map和Collection的区别 ?

Collection<E>:单例集合,只能存储一种引用类型数据 遍历方式和Map不同;

Collection集合的应用范围大:

ArrayList

Vector

LinkedList

它里面的部分集合和Map有关联(HashSet--->依赖HashMap / TreeSet---->依赖于TreeMap)

Map<K,V>,双列集合---->可以存储键值对("夫妻对")

遍历方式:通用方式 获取所有的键,通过键找值!

应用范围:

HashMap---->存储 和 获取 (默认使用)

TreeMap---->存储---获取(按照排序规则排序)

Map---->称为 "实体"

Map<Integer,Product>

Map(针对键有效,键必须唯一!)的基本功能

添加:

V put(K key, V value):添加键值对元素,返回值什么意思?

map针对键有效,键如果唯一的,返回是null;

如果重复,将后面的键对应的值把前面的值覆盖了,返回第一次键对应的值

删除:

V remove(Object key):删除键,返回键对应的值

void clear():暴力删除,将map清空掉

判断:

boolean containsKey(Object key):判断Map集合是否包含指定的键,包含返回true,否则false

boolean containsValue(Object value):判断Map集合是否包含指定的值,包含则返回true,否则false

boolean isEmpty() :判断集合是否为空

遍历Map集合的方式

1)获取所有的键的集合 Set<K> keySet() (通用的遍历方式) --->"获取所有的丈夫",丈夫自己妻子

结合 V get(Object key):通过键找值

例如:

获取所有的键的集合 Set<K> keySet() (通用的遍历方式) 结合 V get(Object key):通过键找值

    Set<String> keySet = map.keySet() ;
    for(String key:keySet){
        //通过键获取值
        String value = map.get(key);
        System.out.println(key+"---"+value) ;

2)Set<Map.Entry<K,V>> entrySet() :获取Map结合的键值对对象 ---->"获取所有结婚",找丈夫,找妻子

    Set<Map.Entry<String, String>> entry = map.entrySet() ;
    //遍历所有映射项(一个键->一个值)
    for(Map.Entry<String, String> en:entry){
        //K getKey():通过键值对对象,获取键
        //K getKey():通过键值对获取值
        String key = en.getKey();
        String value = en.getValue();
        System.out.println(key+"---"+value)

HashMap---->put方法---->依赖于hashCode()+equals()方法 能够保证键唯一!

存储String,String类型重写了hashCode()+equals()方法,比较键的字符串内容是否相同!

HashMap<K,V> 存储键值对元素,保证K唯一,根据的类型有关系

如果K是自定义类型,

HashMap<Student,String> ,考虑保证学生对象唯一!

Key:Student类型

Value:String类型

要针对键有效,需要键的类型,需要重写equals()和hashCode()

equals():比较内容是否相同, hashCode():比较每一个成员信息的哈希码值是否一样

TreeMap<K,V>-->针对键有效,排序(自然排序/比较器排序)

构造方法:

public TreeMap():自然排序

public TreeMap(Comparator<? super K> comparator):比较器排序

如果键是自定义类型,键必须唯一,而且需要有排序规则!

TreeSet<Emplyee,String> 来按照学生的年龄从小到大排序(主要条件)

java.util.Collections:针对集合操作工具类

常用的方法

二分搜索法,在指定List集合中查询指定元素第一次出现索引值 (集合的元素有序)

public static <T> int binarySearch(List<? extends Comparable<? super T>> list,T key)

public static <T> T max(Collection<? extends T> coll):针对Collection集合获取最大值(自然顺序比较获取最大值)

public static <T> T min(Collection<? extends T> coll):针对Collection集合获取最小值(自然顺序比较获取最小值)

public static void reverse(List<?> list):将List集合的元素反转

public static void shuffle(List<?> list):针对List集合随机置换

public static <T extends Comparable<? super T>> void sort(List<T> list):针对List集合按照自然顺序排序

public static <T extends Comparable<? super T>> void sort(List<T> list,Comparator<T> com):

针对List集合按照比较器进行排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值